web-dev-qa-db-ja.com

paramikoを使用してリモートホストに接続できませんか?

Scpを使用して2つのUbuntuサーバー間でファイルを転送したいのですが、2つのシステム間でscpをテストしましたが、完全に問題なく動作しました。ファイルを取得する必要があるたびにコマンドを実行したくないので、pythonスクリプト。

オンラインで検索していると、この Paramiko モジュールが見つかりました。インストールに問題があり、モジュールcryptographyを使用してこれを修正しました。実際の問題については、以下の端末で説明しています。

>>> from paramiko import SSHClient
>>> from scp import SCPClient
>>> ssh = SSHClient()
>>> ssh
<paramiko.client.SSHClient object at 0x1a41c90>
>>> ssh.load_system_Host_keys()
>>> ssh.set_missing_Host_key_policy(paramiko.AutoAddPolicy()) 
>>> ssh.connect('[email protected]')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 296, in c                                                                                    onnect
    to_try = list(self._families_and_addresses(hostname, port))
  File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 200, in _                                                                                    families_and_addresses
    addrinfos = socket.getaddrinfo(hostname, port, socket.AF_UNSPEC, socket.SOCK_S                                                                                    TREAM)
socket.gaierror: [Errno -2] Name or service not known
>>> ssh.connect('192.168.100.100')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 361, in c                                                                                    onnect
    server_key)
  File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 672, in m                                                                                    issing_Host_key
    raise SSHException('Server %r not found in known_hosts' % hostname)
paramiko.ssh_exception.SSHException: Server '192.168.100.100' not found in known_hos                                                                                    ts

安全に使用できるようにIPとユーザー名を変更しましたsomename is replacedですが、original username。これを何度か試しましたが、それでも同じエラーが発生します。

この問題に関する提案はありますか?.

12
SaiKiran

たぶん、missing_Host_key_policyがない

これはどうですか:

proxy = None
client = paramiko.SSHClient()
client.load_system_Host_keys()
client.set_missing_Host_key_policy(paramiko.AutoAddPolicy())
client.connect(Host['hostname'], username=Host['user'], sock=proxy)

その他の例: www.programcreek.com

26
tokhi

私にとっての解決策は:

client = SSHClient()
client.load_system_Host_keys()
client.set_missing_Host_key_policy(AutoAddPolicy())
client.connect(Host, username=user,password=password)
2
Eric

これを使ってみてください:

ssh.connect( 'Host'、username = 'username'、password = 'password')

パスワードを省略してパスワードを入力せずに接続する場合は、サーバーの既知のホストに公開鍵を追加することもできます。その場合は以下を使用します

ssh.connect( 'Host'、username = 'username')

1
troy_achilies