Paramiko“未知服务器”

2024-04-26 06:44:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试开始使用Paramiko库,但只要我尝试连接到以下简单程序,库就会抛出异常:

import paramiko
ssh = 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 connect
File "build/bdist.macosx-10.7-intel/egg/paramiko/client.py", line 85, in missing_host_key
paramiko.SSHException: Unknown server 127.0.0.1

无论我尝试哪个服务器,都会发生这种情况。


Tags: inpybuild程序clientparamikoeggconnect
3条回答

我也遇到过同样的问题,以下是我的解决方案:

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')

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

更多细节请参见paramiko api doc。希望这有帮助。

异常是由于缺少主机密钥而引发的,相当神秘的“未知服务器”是线索-因为异常是从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')

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

#主机密钥/etc/ssh/ssh_主机_ecdsa_密钥

重新启动sshd,它回到使用RSA。我的已知主机文件中有一些ecdsa密钥,所以我删除了它以重置,然后手动登录以重新创建密钥。从那里开始,paramiko在RSA主机密钥检查中完美地工作了。

相关问题 更多 >