为了账号安全,请及时绑定邮箱和手机立即绑定

请问Paramiko“未知服务器”

请问Paramiko“未知服务器”

守着一只汪 2019-11-03 04:04:43
我正在尝试使用Paramiko库,但是一旦尝试连接以下简单程序,该库就会引发异常:import paramikossh = paramiko.SSHClient()ssh.connect('127.0.0.1', username='boatzart', password='mypassword')我得到的错误是:Traceback (most recent call last):File "test.py", line 6, in <module>ssh.connect('127.0.0.1')File "build/bdist.macosx-10.7-intel/egg/paramiko/client.py", line 316, in connectFile "build/bdist.macosx-10.7-intel/egg/paramiko/client.py", line 85, in missing_host_keyparamiko.SSHException: Unknown server 127.0.0.1无论我尝试使用哪个服务器,都会发生这种情况。
查看完整描述

3 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

引发异常是因为您缺少主机密钥,线索很神秘,因为“未知服务器”是由于 missing_host_key


尝试以下方法:


import paramiko


paramiko.util.log_to_file('ssh.log') # sets up logging


client = paramiko.SSHClient()

client.load_system_host_keys()

client.connect('127.0.0.1', username=username, password=password)

stdin, stdout, stderr = client.exec_command('ls -l')



查看完整回答
反对 回复 2019-11-04
?
萧十郎

TA贡献1815条经验 获得超13个赞

我遇到了同样的问题,这是为我解决的解决方案:


import paramiko


client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client.connect('127.0.0.1', username=username, password=password)

stdin, stdout, stderr = client.exec_command('ls -l')

这是为了设置连接到在系统或本地HostKeys对象中都没有主机密钥的服务器时使用的策略。默认策略是拒绝所有未知服务器(使用RejectPolicy)。您可以替代AutoAddPolicy或编写自己的策略类。


更多详细信息,请参见paramiko api doc。希望这可以帮助。



查看完整回答
反对 回复 2019-11-04
?
温温酱

TA贡献1752条经验 获得超4个赞

我遇到了这个问题,想在这里发布解决方法。问题确实是ssh服务器发送了ecdsa密钥,paramiko目前尚不支持该密钥。在我的debian Wheezy系统上,我通过注释/ etc / ssh / sshd_config中的一行来禁用ecdsa:


#HostKey / etc / ssh / ssh_host_ecdsa_key


重新启动sshd,并重新使用RSA。我的known_hosts文件中有一些ecdsa密钥,因此我只是删除了该密钥以进行重置,然后手动登录以重新创建密钥。从那里开始,paramiko通过RSA主机密钥检查可以按预期工作。



查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 223 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信