有没有办法暂时忽略我的~/.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环境中完全忽略已知的主机文件,请将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证书身份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的主机都具有相同的密钥。