使用 OpenSSH_5.9p1 OpenSSL 1.0.1 连接到服务器,它存储以下格式的 .ssh/known_hosts:
|1|wwwwwwwwwwwwwww=|wwwwwwwwww= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
然后将该 known_hosts 文件复制到另一台运行 OpenSSH_4.5p1 OpenSSL 0.9.8d 的 PC,它会显示“无法建立真实性,您确定要继续连接吗”消息,就好像 known_hosts 文件不正确一样。
当第二台 PC 存储同一台服务器的 known_hosts 时,它会以以下格式写入:
[10.2.3.4]:22 ssh-rsa AAAAAAAAAA/BBBBB/CCCCCC//DDDDDD
有没有办法在这两种格式之间进行转换?
答案1
您的第一个示例包含一个 ECDSA 密钥(ecdsa-sha2-nistp256
),它是在 OpenSSH 5.7 中引入的。
OpenSSH 4.5 仅支持 RSA 和 DSA 密钥(ssh-rsa
和ssh-dss
),并且忽略您的 known_hosts 条目。
答案2
您拥有的第一个密钥格式是散列格式,旨在防止侵入您帐户的人知道他/她可以使用您的密码和/或 SSH 密钥连接到哪些其他主机。
可以将纯文本格式转换为哈希格式,但不能反过来。网上有各种用于此目的的脚本。
如果你不太担心这个问题,那么你可以随时添加
HashKnownHosts no
禁用~/.ssh/config
哈希known_hosts
。请参阅ssh_配置(5)了解更多详情。