远程主机标识已更改

我试图通过我的mac( ssh root@vpsXXX.ovh.net )上的terminal在OVH(unbuntu 16)上的云服务器上手动连接serverpilot,

操作失败了一次,现在,我正在尝试重新设置它我收到一条错误消息“警告:远程主机标识已更改!”

我在博客上读到,键入ssh-keygen -R hostname可能会解决这个问题,但是当我这样做时,我收到一条消息"Host hostname not found in /Users/GregMac/.ssh/known_hosts"

任何想法如何解决这个问题? (我是服务器configuration和commande线上的总新手……这就是为什么我指望serverpilot)

谢谢

简答题

自上次尝试访问在该主机上运行的SSH服务器以来,有一个文件已被更改。 那个文件是

 /Users/whateveryourusernameis/.ssh/known_hosts 

该文件中的某处是一个条目,只有一行,以您试图在[vpsXXX.ovh.net]括号内覆盖的主机开头。

如果您确定要尝试访问的服务器只是您自己更改和设置的服务器,则可以安全地删除该行并重试。

更长的答案,打了电话

SSH是系统pipe理员最基本的工具, 它的工作原理值得您的关注。

当你联系一个SSH服务器时,服务器的第一步就是使用自己的公共主机密钥来显示SSH客户端。 这个密钥通常附加到客户端的~/.ssh/known_hosts文件中,这样如果这个密钥在不同的ssh会话之间改变,客户端将会被警告主机不再是它之前联系的原始主机。 这提醒你,你已经达到的主机可能是一个冒名顶替的事实,除非你已经毫无疑问地知道主机实际上已经改变了。

主机密钥是SSH协商过程的核心部分,您应该熟悉如果您pipe理任何系统。 这个密钥通常只会生成一次,第一次启动SSH服务器。 因此,如果您收到主机密钥已更改的警告,则会发生以下事件之一:

  • 已经部署了新的服务器(或机器映像等),并且曾经指向前一服务器的IP地址或域名已经被改变为指向新服务器(这是典型的,特别是在云环境中)。
  • 有人更改或删除了机器上的公共主机密钥。 我会立即想知道为什么,因为通常没有理由 – 一个例外可能是非常严格的安全程序,每隔一段时间轮换一次密钥。 即使这样,我也希望在这种情况下分配新的公钥指纹来避免这个错误。
  • 有人设法拦截发送到该IP或域名的stream量,并指出在他们自己的服务器上进行麻烦的尝试来发起MITM SSH攻击,或者更可能的是,他们试图插入自己的服务器stream量在一个单独的端口和协议(如HTTPS)。

如果您在云环境中工作,则新机器映像和实例会一直交换以replace旧的机器映像和实例。 因此,删除警告并继续SSH到新主机的方法就是从~/.ssh/known_hosts文件中删除旧指纹。 根据最佳做法,最好在知道发生更换后立即将其删除,然后login一次以确认并存储新的主机密钥。

最后,尊重你的pipe理员,让他们知道发生了什么,这样他们就不会觉得有必要自己拉火警。

后脚本(或者,检查ssh-keygen -R失败)

我发现了一个类似于你所做的页面 ,并且有一个关于新行为的提示,可能会将公钥主机的标识改变为我以前从来没有听说过的一些散列值,而不是[vpsXXX.ovh.net] ,它可能看起来像[BF8JDF9SS@67IX] 。 如果是这种情况,而且你没有编辑太多的话,你可以移动 known_hosts文件,通过ssh连接,然后用一行创build一个新文件。 行将具有连接到的域或IP的正确哈希值,因此可以使用新创build的文件replace旧主机密钥。 将已编辑的known_hosts文件移回原处,并且已经为该连接更新了存储的公用主机密钥。