【问题标题】: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,反之亦然

标签: ssh


【解决方案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

      【讨论】:

        猜你喜欢
        • 2015-05-26
        • 2014-01-17
        • 2019-01-19
        • 1970-01-01
        • 2012-01-29
        • 2020-07-11
        • 2018-02-10
        • 2018-11-10
        • 1970-01-01
        相关资源
        最近更新 更多