猿问

Paramiko“未知服务器”

我正在尝试使用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

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


子衿沉夜
浏览 427回答 3
3回答

忽然笑

引发异常是因为您缺少主机密钥,线索很神秘,因为“未知服务器”是由于 missing_host_key尝试以下方法:import paramikoparamiko.util.log_to_file('ssh.log') # sets up loggingclient = 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')

暮色呼如

我遇到了同样的问题,这是为我解决的解决方案:import paramikoclient = 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或编写自己的策略类。

幕布斯7119047

我遇到了这个问题,想在这里发布解决方法。问题确实是ssh服务器发送了ecdsa密钥,paramiko目前尚不支持该密钥。在我的debian Wheezy系统上,我通过注释/ etc / ssh / sshd_config中的一行来禁用ecdsa:#HostKey / etc / ssh / ssh_host_ecdsa_key重新启动sshd,并重新使用RSA。我的known_hosts文件中有一些ecdsa密钥,因此我只是删除了该密钥以进行重置,然后手动登录以重新创建密钥。从那里开始,paramiko通过RSA主机密钥检查可以按预期工作。
随时随地看视频慕课网APP

相关分类

Python
我要回答