ssh 客户端正在询问我新服务器的指纹是否正确。此指纹是 sha256。
ssh 服务器可以告诉我它的指纹
ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key
但这是 md5 格式。
文档ssh-keygen
说这是修复
ssh-keygen -l -E sha256 -f /etc/ssh/ssh_host_ecdsa_key
但是这个-E
选项在 CentOS 上似乎不可用。我可以在客户端上使用
ssh -o FingerprintHash=md5 user@newserver
然而,良好的做法要求我们避开 md5,如果我能统一处理这个问题,它将简化自动化和工作流程(在多个环境/分布中测试)。
如何在 CentOS 上获取 ssh 密钥的 sha256 指纹?
答案1
CentOS 打包的 OpenSSH 版本是方式对于该功能来说太旧了。
另一种方法是直接使用sha256sum
,因为“指纹”只是原始密钥的哈希值:
awk '{print $2}' foo.pub | base64 -d | sha256sum | xxd -p -r | base64
可以使用以下方法获取 MD5 哈希值:
awk '{print $2}' foo.pub | base64 -d | md5sum
或者,您可以跳过整个“指纹”和“手动确认”步骤,只需将实际的公钥复制到您的 中即可~/.ssh/known_hosts
。(不要忘记在它前面添加 IP 地址)。
echo "192.168.1.2 $(cat foo.pub)" >> ~/.ssh/known_hosts
这样,密钥就可以预先验证了。这似乎是一种易于自动化的方法。