如何摆脱“远程主机标识已更改”消息

Posted

技术标签:

【中文标题】如何摆脱“远程主机标识已更改”消息【英文标题】:How to get rid of "REMOTE HOST IDENTIFICATION HAS CHANGED" message 【发布时间】:2017-03-18 04:00:26 【问题描述】:

我的计算机上安装了几个虚拟机,我通过 ssh 连接到这些虚拟机:

ssh vm1@localhost

ssh vm2@localhost

所以每次我连接到不同的虚拟机时,我都需要编辑我的~/.ssh/known_hosts 文件以消除:“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”消息。

有没有办法自动信任本地主机上的所有虚拟机?

【问题讨论】:

这些命令应该如何连接到不同的系统?它们都连接到您的本地主机。 @arkascha — 大概是通过端口转发。 @Quentin 即便如此,为什么端口转发的行为会因帐户名称而异? @arkascha — 没有。行为的变化是由于一个 VM 被关闭而另一个 VM 正在启动......所以端口转发转到不同的主机。 我正在使用 VirtualBox,所以当我需要 vm2 时,我将关闭 vm1,反之亦然 【参考方案1】:

您可以尝试修改~/.ssh/known_hosts文件。

删除文件中的所有内容是一个选项**,您可以使用 nano 或您喜欢的编辑器来完成。例如:

nano ~/.ssh/known_hosts

再次尝试连接,它应该可以工作

ssh -i ~/.ssh/yourkey.pub vm1@localhost

**尽管如此,如果您只删除与冲突关联的行,这将是一个好习惯。

【讨论】:

【参考方案2】:

您可以通过在~/.ssh/config 中将NoHostAuthenticationForLocalhost 设置为yes 来禁用专门针对localhost 的主机检查,如下所示。

NoHostAuthenticationForLocalhost yes

请注意,当通过跳转主机连接到另一台机器上的localhost 时,这不起作用。

或者,您仍然可以通过为每个主机定义一个不同的HostKeyAlias 来实现正常的主机检查。 这还有一个额外的好处,那就是在跳转主机上工作。 以下~/.ssh/config 的配置示例演示了这一点。

Host vm1
  HostName localhost
  HostKeyAlias vm1.localhost

Host vm2
  HostName localhost
  HostKeyAlias vm2.localhost

ssh_config manpage 建议针对这种情况。

HostKeyAlias 指定在查找或保存时应使用的别名而不是真实主机名 主机密钥数据库文件和验证主机证书时的主机密钥。这 选项对于隧道 SSH 连接或在单个服务器上运行的多个服务器很有用 主持人。

【讨论】:

【参考方案3】:

在您的配置中(例如 ~/.ssh/config),您可以丢弃特定主机名的已知主机:

Host localhost
        HostName localhost
        UserKnownHostsFile=/dev/null
        StrictHostKeyChecking=no

credit

【讨论】:

以上是关于如何摆脱“远程主机标识已更改”消息的主要内容,如果未能解决你的问题,请参考以下文章

远程主机标识已更改

警告:远程主机标识已更改 (1)

markdown SSH远程主机标识已更改

检测到可能的 DNS 欺骗。远程主机标识已更改

Ubuntu-ssh - - 警告:远程主机标识已更改 [关闭]

ssh WARNING:REMOTE HOST IDENTIFICATION HAS CHANGED(警告:远程主机标识已更改)