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

Paramiko“未知服务器”

Paramiko“未知服务器”

子衿沉夜 2019-10-11 14:48:24
我正在尝试使用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 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

引发异常是因为您缺少主机密钥,线索很神秘,因为“未知服务器”是由于 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-10-11
?
暮色呼如

TA贡献1853条经验 获得超9个赞

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


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或编写自己的策略类。


查看完整回答
反对 回复 2019-10-11
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我遇到了这个问题,想在这里发布解决方法。问题确实是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-10-11
  • 3 回答
  • 0 关注
  • 421 浏览
慕课专栏
更多

添加回答

举报

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