Python 无法使用paramiko连接到远程主机?
我想使用scp在两台Ubuntu服务器之间传输文件,我已经在两个系统之间测试了scp,它工作得非常好。所以我不想每次需要获取文件时都执行命令,所以我想编写一个python脚本,使用scp自动从其他主机下载文件 在网上搜索时,我发现了此模块,安装此模块时遇到问题,我已使用模块Python 无法使用paramiko连接到远程主机?,python,ssh,pip,scp,paramiko,Python,Ssh,Pip,Scp,Paramiko,我想使用scp在两台Ubuntu服务器之间传输文件,我已经在两个系统之间测试了scp,它工作得非常好。所以我不想每次需要获取文件时都执行命令,所以我想编写一个python脚本,使用scp自动从其他主机下载文件 在网上搜索时,我发现了此模块,安装此模块时遇到问题,我已使用模块加密技术纠正了此问题。现在,下面用终端解释了真正的问题 >>> from paramiko import SSHClient >>> from scp import SCPClient &g
加密技术纠正了此问题。现在,下面用终端解释了真正的问题
>>> 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
来自paramiko import SSHClient的>>
>>>从scp导入scp客户端
>>>ssh=SSHClient()
>>>ssh
>>>ssh.load\u system\u host\u keys()
>>>ssh.set_缺少_主机_密钥_策略(paramiko.AutoAddPolicy())
>>>ssh.connect('somename@192.168.100.100')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python2.7/dist-packages/paramiko/client.py”,第296行,在c-connect中
to_try=list(self._families_和_地址(主机名、端口))
文件“/usr/local/lib/python2.7/dist-packages/paramiko/client.py”,第200行,位于家庭和家庭地址中
addrinfos=socket.getaddrinfo(主机名、端口、socket.AF_unsec、socket.SOCK_S)
socket.gaierror:[Errno-2]名称或服务未知
>>>ssh.connect('192.168.100.100')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python2.7/dist-packages/paramiko/client.py”,第361行,在c-connect中
服务器(U密钥)
文件“/usr/local/lib/python2.7/dist packages/paramiko/client.py”,第672行,缺少主机密钥
引发SShexException('在已知的\u主机“%hostname”中找不到服务器%r)
paramiko.ssh_exception.SSHException:在已知目录中找不到服务器“192.168.100.100”
为了安全使用,我更改了ip和用户名somename已被替换
,但我已尝试使用原始用户名
。因此我尝试了几次,但仍然收到相同的错误
关于这个问题有什么建议吗?请帮助。可能您缺少缺少主机密钥策略
这个怎么样:
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)
更多示例如下:尝试使用以下方法:
ssh.connect('host',username='username',password='password')
若要跳过密码并在不提供密码的情况下连接,还可以将公钥添加到服务器中的已知主机。
在这种情况下,请使用:
ssh.connect('host',username='username'))
对我来说,解决方案是:
client = SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(AutoAddPolicy())
client.connect(host, username=user,password=password)
你想把这个解决方案解释得更清楚一点吗?仅仅粘贴一些代码是可以的,但是请详细说明为什么这段代码修复或解决了这个问题。