我想将HostKeyAlgorithms
所有 SSH 连接的默认设置更改为 优先ssh-ed25519
于ecdsa-sha2-nistp256
。但我的文件中目前有ecdsa-sha2-nistp256
许多主机的主机密钥known_hosts
(大约 70 个)。当我使用新设置连接到这样的主机时,我收到的消息与有人替换了该主机上的主机密钥时相同:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:rqhdlN+Qe/GJeWoj3pyhLLSnzSCz68ZA7ds+mG4iZ7o.
Please contact your system administrator.
Add correct host key in [...]/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in [...]/.ssh/known_hosts:52
ED25519 host key for [...] has changed and you have requested strict checking.
Host key verification failed.
现在我不想从我的known_hosts
文件中删除所有这些主机,并在下次连接时接受“新”的 ED25519 密钥。相反,我希望有一种方法可以继续使用该文件的现有内容。有什么办法吗?例如,即使不使用首选算法,也可以回退到已知的主机密钥。或者有没有一种自动替换所有这些条目的方法?
答案1
我回答过类似的问题Unix简而言之,在 OpenSSH 6.8+ 中有一个选项UpdateHostKeys
,它告诉你的客户端它应该获取服务器提供的所有主机密钥。
这应该可以解决你的问题。