2017-03-10 8 views
0

私はparamikoから始めて、load_system_host_keys()に問題があります。Paramiko "Unknown Server"

私は試してみてください。

client = SSHClient() 
client.load_system_host_keys(filename='/home/barashe/.ssh/known_hosts') 
client.connect(hostname='lvs.cs.bgu.ac.il') 
stdin, stdout, stderr = client.exec_command('ls -l') 

は私が

SHException: Server 'lvs.cs.bgu.ac.il' not found in known_hosts 

を取得し、私はload_host_keys()の代わりに、load_system_host_keysを(使用している場合hostkeysインスタンスが

list(client.get_host_keys()) 
[] 

空であるようにそれはそう)私はまだ同じエラーが発生しますが、hostkeysのインスタンスは空ではなく、サーバーにはtrが含まれています私は

client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

を使用して、私はこの状況を回避することができますが、私はそれを「正しい」方法をやって好むことを知っているという奇妙に思える

list(client.get_host_keys()) 
['lvs.cs.bgu.ac.il', 
'132.72.41.50'] 

... に接続する瑛。

私が理解しようとしているです:load_host_keysを使用した場合

  1. は、なぜ私は、サーバーがhostkeysに表示されていても)(同じエラーを取得していますか?
  2. このコンテキストでload_host_keys()とload_system_host_keys()の違いは何ですか?

乾杯!

答えて

0

ホームディレクトリのプライベートホストキーファイルの場合は、load_system_host_keysではなくload_host_keysを使用してください。

ちょうど好奇心から離れて、set_missing_host_key_policyを使用しなかった場合、その特定のホストのホストキーはどこから取得されましたか? .sshディレクトリからコピーした場合、キーファイル形式が異なる可能性があります。いくつかあります。

AutoAdd不足しているホストキーポリシーを追加し、空のプライベートホストキーファイルをポイントすることでテストできます。あなたのログインは今成功するはずです(認証が成功したと仮定します)。それが成功するか失敗するかにかかわらず、プライベートホストのキーファイルには正しい形式のホストキーが含まれているはずです。欠落しているホスト鍵のポリシー設定を削除し、スクリプトを再度実行することによって、動作することを確認できます。これは、もはやホストキーが見つからないことを嫌うものではありません。

は、これが私の作品:私は理解して、私が知っている私の.ssh/known_hostsファイルを、使用しなかった

+0

このことができます

from paramiko import SSHClient import paramiko client = SSHClient() client.load_host_keys(filename='/home/test/stest/kknown_hosts') # client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname='137.xx.x.x') stdin, stdout, stderr = client.exec_command('ls -l') 

希望、 ハンヌは良いコールではなかったです。 私はあなたが提案した方法で新しいファイルを作成しました。 多くの感謝! – Eran

関連する問題