无法使用 paramiko 连接到远程主机?

新手上路,请多包涵

我想使用 scp 在两个 Ubuntu 服务器之间传输文件,我已经在两个系统之间测试了 scp,它工作得非常好。所以我不想每次需要获取文件时都执行命令,所以我想编写一个自动执行的 python 脚本使用 scp 从其他主机下载文件。

在网上搜索时,我发现了这个 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('somename@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 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 。所以我试了几次,但我仍然遇到同样的错误。

关于这个问题有什么建议吗?请帮助。

原文由 SaiKiran 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 891
2 个回答

也许你错过了 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

原文由 tokhi 发布,翻译遵循 CC BY-SA 3.0 许可协议

对我来说,解决方案是:

 client = SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(AutoAddPolicy())
client.connect(host, username=user,password=password)

原文由 Eric 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题