PythonParamiko:手动验证SSH主机密钥指纹



我使用python Paramiko使用ssh连接到vps提供商上托管的远程ubuntu盒子。使用基于Windows7的客户端机器,我可以连接如下:

import paramiko
import binascii
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='HOSTNAME', username='USERNAME', password='PASSWORD')

这一切都很好,但现在我想验证主机服务器身份,因为我在windows上,Paramiko将无法获取known_hosts文件或类似文件。我尝试了以下代码:

#... after connection is successful
keys = ssh.get_host_keys()
key = keys['HOSTNAME']['ssh-rsa']
print binascii.hexlify(key.get_fingerprint())
# key.get_fingerprint() returns the md5 hash of 
# the public part of the key (whatever that means)

其输出类似于以下内容:

a42273f83e62d65cc87231a2ba33eff3

问题是,在我的VPS提供商的面板上,我列出了RSA和DSA主机密钥指纹,类似于:

RSA 1b:c2:f4:8f:f2:86:fc:f2:96:ba:cc:24:41:e9:d7:86
DSA 36:b9:1f:ad:53:b5:c4:38:78:bf:cb:9d:38:fa:44:ce

并且可以看出,没有一个指纹与生成的指纹相匹配。如何将手动生成的指纹与远程主机cpanel上的指纹值进行比较?我所做的正确吗?

解决了,原来控制面板中显示的RSA密钥指纹不适用于VPS主机,而是适用于带外专用控制台。(VPS主机的)实际密钥位于:/etc/ssh/ssh_host_rsa_key.pub下,指纹值(其MD5哈希)正是我从客户端验证码中获得的。所以一开始没有任何问题。

相关内容

  • 没有找到相关文章

最新更新