3 回答
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')
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。希望这可以帮助。
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主机密钥检查可以按预期工作。
- 3 回答
- 0 关注
- 223 浏览
添加回答
举报