我正在尝试连接到我之前连接过的服务器。但是,较新版本的 OpenSSH 不使用 DSA 密钥。尝试连接时出现以下错误:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 ***RSA*** key sent by the remote host is
SHA256:mxVLlJWwlY7pRm1nhOksy0eS4KIQbAE8nv7x0p3Ds8Q.
Please contact your system administrator.
Add correct host key in /Users/john/.ssh/known_hosts to get rid of this message.
Offending ***DSA*** key in /Users/john/.ssh/known_hosts:25
***RSA*** host key for example.com has changed and you have requested strict checking.
Host key verification failed.
我发现问题是 DSA 密钥已存储,known_hosts
但还没有 RSA 密钥。添加 RSA 密钥可以解决该问题。
我认为该消息具有误导性,RSA 主机密钥没有更改。
我希望 OpenSSH 通知我还没有 RSA 密钥并让我添加密钥。它还应该检查 DNS 中的密钥并显示Matching host key fingerprint found in DNS.
消息(我已设置)。
是否值得向 OpenSSH 报告错误?
答案1
我认为该消息具有误导性,RSA 主机密钥没有更改。
该消息有效。你的密钥known_hosts
是DSA,服务器发送RSA,它们不同并且是错误的。
自 OpenSSH 6.8 起,服务器在身份验证后发送所有密钥,以简化主机密钥轮换或弃用。
如果您有足够新的客户端和服务器,请继续使用解决方法,暂时接受 DSA 密钥并让客户端选择新的密钥:
ssh -oHostKeyAlgorithms=+ssh-dss your_remote_host
如果服务器有旧版本,您需要按照问题中的解释手动执行此操作。
这还需要一个配置为接受新密钥的客户端:UpdateHostKeys yes
。