似乎openssh改变了它显示关键指纹的方式。
我正在尝试从客户端计算机SSH到服务器:
- 客户端:运行OpenSSH 6.6.1的ubuntu 14.04
- 服务器:运行OpenSSH 7.2p2的FreeBSD。
客户端将服务器密钥的md5哈希报告为16对十六进制数字的序列,如下所示:
a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a
服务器默认使用sha256哈希,但是由于这个答案,我可以通过运行以下命令强制它提供sha1哈希:
[root@host /etc/ssh]# ssh-keygen -l -E sha1 -f ssh_host_ecdsa_key.pub
我希望结果看起来像这样:
a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a
但是我得到了这个:
256 SHA1:KIh0ejR4O+RqrSq7JdGAASddRfI root@host.local (ECDSA)
在我看来,现在正在显示指纹的base64编码版本,而不是十六进制数字。
如何获取服务器密钥的校验和,格式与(较旧的)客户端报告的格式相同(冒号分隔的十六进制数字,sha1哈希),以检查它们是否相同?
编辑: SSH的旧版本提供了md5校验和,而不是我错误地认为的sha1校验和。在-E选项中使用该校验和(应为现在接受的答案指出)可提供所需的输出。