2

我正在使用 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 上的指纹值进行比较?我在做什么正确吗?

4

1 回答 1

0

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

于 2012-08-30T21:22:58.890 回答