暂时忽略我的`〜/ .ssh / known_hosts`文件?

有没有办法暂时忽略我的~/.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来暂时closuresknown_hosts 。 但我build议反对这个。 你应该真的检查为什么主机密钥已经改变。

另一个select是为有问题的主机添加一个特定的条目到你的~/.ssh/config 。 如果某台主机在每次重新启动时都会生成新的主机密钥,并且每天都会有多次重新启动,那么这可能是有效的方法。

 Host <your problematic host> StrictHostKeyChecking no 

要在POSIX环境中完全忽略已知的主机文件,请将GlobalKnownHostsFileUserKnownHostsFile选项设置为/dev/null

ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host

设置StrictHostKeyChecking=no选项将允许您连接,但SSH 仍将显示警告

ssh -o StrictHostKeyChecking=no user@host

正如其他人所指出的那样,解决潜在的问题可能会更好。 例如,您可以考虑使用SSH证书身份validation来validation主机。

如果您重新安装了服务器,并且标识已更改,则应该从/Users/alexus/.ssh/known_hosts删除指定的行155并继续。

如果您在不同的专用networking之间切换,则应该使用主机名来连接,因为ssh客户端也将根据主机名保存密钥。 把这样的东西添加到你的/etc/hosts

 10.52.11.171 server1 10.52.11.171 server2 

然后在连接到子网1时使用ssh server1在连接到子网2时使用ssh server1 ssh server2 。 这样,两台服务器可以有不同的主机密钥。

-o StrictHostKeyChecking=no只有当主机不在known_hosts文件中时才起作用。

我认为它更清洁(没有警告),如果你期望主机的关键改变可能是由于虚拟机克隆,强制忽略这样的主机types:

 # Handle possible SSH key changes host_key=$(ssh-keyscan -t rsa ${host_ip}) grep "${host_key}" ~/.ssh/known_hosts >/dev/null || { ssh-keygen -R ${host_ip} echo ${host_key} >> ~/.ssh/known_hosts } # connect as normal way ssh root@${host_ip} "hostname" 

login到所有的服务器,(如果RedHat) rm -f /etc/ssh/ssh_host_* ,然后重新启动SSHD。

这将创build不需要被忽略的新的SSH主机密钥。

我只能想到在多个服务器上克隆SSH密钥的一个实例不仅是需要的,而且也不会引发任何警告。 一个Alogging的倍数。 所有具有Alogging的主机都具有相同的密钥。