如何修复SSH主机密钥验证失败,警告(Ubuntu 18.04中的远程主机标识已更改)

本文概述

  • A.手动删除有问题的密钥
  • B.使用ssh-agent
上个月, 我决定升级目前托管了Our Code World的服务器, 以提供真正更好的服务器。像往常一样, 我购买了新服务器并开始配置它, 以便迁移旧服务器数据。过了一会儿, 我去了他们网站上服务器的管理面板, 以删除旧的根密钥文件, 我注意到服务器所在的数据中心不在美国, 而是在法国。选择的数据中心是错误的, 因此我要求在美国购买新服务器。部署后, 我安装了新的操作系统, 但安装了错误版本的Ubuntu(16而不是18.04), 所以我再次擦除了服务器?。最终检查完我安装了正确版本的Ubuntu的所有内容之后, 我尝试通过SSH访问服务器, 再次让我感到惊讶的是, 我遇到了另一个错误:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@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 the RSA host key has just been changed.The fingerprint for the RSA key sent by the remote host isXX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XXPlease contact your system administrator.Add correct host key in /root/.ssh/known_hosts to get rid of this message.Offending key in /root/.ssh/known_hosts:5RSA host key for [192.xxx.xx.xx]:22 has changed and you have requested strict checking.Host key verification failed.

【如何修复SSH主机密钥验证失败,警告(Ubuntu 18.04中的远程主机标识已更改)】造成此问题的原因是, 你正在连接到以前连接过的服务器, 但是自上次连接以来其RSA主机已更改(我使用Ubuntu 16.04连接到服务器的第一个版本, 然后尝试连接到该服务器)与Ubuntu 18.04相同的服务器, 但出现异常)。为了防止任何安全漏洞, 你需要从本地计算机的known_hosts文件中删除此密钥, 以便正确连接。
A.手动删除有问题的密钥好了, 只要你不必担心每次连接到某个服务器时都必须确认指纹有效, 则删除known_hosts文件是一种有效的解决方案, 因此不要删除known_hosts文件。最简单的解决方案是简单地删除文件中有问题的行, 在本例中, 异常消息警告我们有问题的密钥在第5行中:
Add correct host key in /root/.ssh/known_hosts to get rid of this message.Offending key in /root/.ssh/known_hosts:5

因此, 你只需要使用以下单个命令删除该行(用行号替换5):
sed -i '5d' ~/.ssh/known_hosts

就是这样。或者, 使用诸如nano或vim之类的终端编辑器来修改known_hosts文件, 并自行删除该行。
B.使用ssh-agent另外, 如果你知道主机名/ ip, 则可以使用ssh-keygen工具简单地删除有问题的密钥:
ssh-keygen -R < SERVER_IP_OR_HOSTNAME> -f ~/.ssh/known_hosts

这也应该能很好地消除警告显示在终端中。
编码愉快??!

    推荐阅读