openssh 似乎改变了它显示关键指纹的方式。
我正在尝试从客户端机器 ssh 到服务器:
客户端将服务器密钥的 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 选项中使用该校验和(正如现在接受的答案应该说明的那样)可提供所需的输出。