今天本来准备使用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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
XXXXXXXXXXXXXXXXXXXXXXXX
Please contact your system administrator.
Add correct host key in xxxxxxxx to get rid of this message.
Offending key in xxxxxxxxxxxxxxxxxx:7
RSA host key for 192.168.0.4 has changed and you have requested strict checking.
Host key verification failed.
网上针对这个问题提供了一下三种方法进行处理.我使用的是第三种.这种方法可以永久避免出现这种情况.
1.根据提示,删除对应的行.
上述提示,再XXXXXX文件的第7行,这里我们将其注释掉即可.
2.删除整份XXXXXXXXXX文件
3.修改/etc/ssh/ssh_config的配置.在文件的末尾加上以下两个语句.
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
保存然后推出,则发现问题已经被解决了.其原理为
用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。
SSH对主机的public_key的检查等级是根据StrictHostKeyChecking变量来配置的。默认情况下,
StrictHostKeyChecking=ask。简单所下它的三种配置值:
1.StrictHostKeyChecking=no
#最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网测试时建议使用。如果连接server的key在本地不存在,那么就自动添加到文件中(默认是known_hosts),并且给出一个警告。
2.StrictHostKeyChecking=ask #默认的级别,就是出现刚才的提示了。如果连接和key不匹配,给出提示,并拒绝登录。
3.StrictHostKeyChecking=yes #
最安全的级别,如果连接与key不匹配,就拒绝连接,不会提示详细信息。
参考:http://www.51testing.com/?uid-225738-action-viewspace-itemid-234384