有没有办法暂时忽略我的~/.ssh/known_hosts
文件?
mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$
笔记:
..通过一些答案/评论,我意识到我的问题有点误导,所以很短它是预期的行为),所以这是正常的(在我的情况下)有一个正当的理由为什么我想看“无视”)
您可以使用暂时
ssh -o StrictHostKeyChecking=no
关闭检查。known_hosts
但我建议不要这样做。您应该真正检查主机密钥更改的原因。另一种选择是为相关主机添加特定条目
~/.ssh/config
。如果您有某个主机每次重新启动时都会生成新的主机密钥,并且每天会因正当理由多次重新启动,那么这可能是一种有效的方法。要在 POSIX 环境中完全忽略已知主机文件,请将
GlobalKnownHostsFile
和UserKnownHostsFile
选项设置为/dev/null
:ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host
设置该
StrictHostKeyChecking=no
选项将允许您连接,但 SSH仍会显示警告:ssh -o StrictHostKeyChecking=no user@host
正如其他人所指出的,解决根本问题可能更好。例如,您可以考虑使用SSH 证书身份验证来验证主机。
如果您已重新安装服务器,因此标识已更改,则应删除指定的第 155 行
/Users/alexus/.ssh/known_hosts
并继续。如果你在不同的私有网络之间切换,你应该使用主机名来连接,因为 ssh 客户端也会根据主机名保存密钥。将这样的内容添加到您的
/etc/hosts
:然后
ssh server1
在连接到子网 1 和连接到子网 2ssh server2
时使用。这样,两台服务器都可以有不同的主机密钥。有人说这是不对的,你不应该这样做等等,但我也需要这个来一遍又一遍地测试几个嵌入式设备。您需要禁用
StrictHostKeyChecking=no
,这是正确的,但还要将已知主机文件重置为/dev/null
. 这是自动登录和ps
远程设备上的示例。-o StrictHostKeyChecking=no
仅当 host 不在 known_hosts 文件中时才有效。我认为它更干净(没有警告),如果您希望主机密钥可能由于 vm 克隆而改变,强制忽略此类主机,如下所示:
我的别名:
登录到所有服务器(如果是 RedHat)
rm -f /etc/ssh/ssh_host_*
,然后重新启动 SSHD。这将创建不需要忽略的新 SSH 主机密钥。
我只能想到一个实例,其中不仅需要在多台服务器上克隆的 SSH 密钥,而且不会引发任何警告。一个 A 记录的倍数。具有 A 记录的所有主机都具有相同的密钥。