CentOS 中 ssh-keygen -E 的对应版本是什么?

CentOS 中 ssh-keygen -E 的对应版本是什么?

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

这样,密钥就可以预先验证了。这似乎是一种易于自动化的方法。

相关内容