ssh跳过knownhost文件

在平时工做中,有时候须要SSH登录到别的Linux主机上去,但有时候SSH登录会被禁止,并弹出以下相似提示:安全

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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
SHA256:a8fAxLioJ3P3YoM04dKmz/nc75axX6jtGaIvBNirKO4.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:1
RSA host key for 192.168.80.7 has changed and you have requested strict checking.
Host key verification failed.服务器

 

比较奇怪,因而研究了一下。 ssh会把你每一个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。若是公钥不一样,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。我在上面列出的状况,就是这种状况。ssh

缘由:一台主机上有多个Linux系统,会常常切换,那么这些系统使用同一ip,登陆过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,须要手动删除修改known_hsots里面的内容。this

有如下两个解决方案:
1. 手动删除修改known_hsots里面的内容;
2. 修改配置文件“~/.ssh/config”,加上这两行,重启服务器。spa

1    StrictHostKeyChecking no           # 不会问yes/no
2    UserKnownHostsFile /dev/null       # 将文件定到空,每次不同也没事

优缺点:
1. 须要每次手动删除文件内容,一些自动化脚本的没法运行(在SSH登录时失败),可是安全性高;
2. SSH登录时会忽略known_hsots的访问,可是安全性低;.net

 


参考文档:https://blog.csdn.net/yasaken/article/details/7348441 code

相关文章
相关标签/搜索