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

时间:2012-08-30 12:19:33

标签: python paramiko ssh-keys rsa-key-fingerprint

我正在使用python Paramiko将ssh连接到vps提供程序上托管的远程ubuntu框。使用基于Windows 7的客户端计算机,我能够按如下方式连接:

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提供商的cpanel上,我将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上的指纹值进行比较?我正在做的是什么?

1 个答案:

答案 0 :(得分:0)

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