如何摆脱“远程主机标识已更改”消息
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
【讨论】:
以上是关于如何摆脱“远程主机标识已更改”消息的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu-ssh - - 警告:远程主机标识已更改 [关闭]
ssh WARNING:REMOTE HOST IDENTIFICATION HAS CHANGED(警告:远程主机标识已更改)