比较奇怪,于是研究了一下。
ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。我在上面列出的情况,就是这种情况。
原因:一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容。
known_hosts中的内容类似于
假如出现这种情况:
-
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-
@ 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 ECDSA key sent by the remote host is
-
SHA256:EqIFQoWYDISyGnJggyqnk8888LeNn3tr1+QmBQaso0.
-
Please contact your system administrator.
-
Add correct host key in /Users/caolijian/.ssh/known_hosts to get rid of this message.
-
Offending ECDSA key in /Users/caolijian/.ssh/known_hosts:12
-
ECDSA host key for 192.168.1.112 has changed and you have requested strict checking.
-
Host key verification failed.
则是需要清理一下之前保存的认证密钥。
-
// 查看
-
ssh-keygen -l -f ~/.ssh/known_hosts
-
// 清理192.168.1.112的认证rsa
-
ssh-keygen -R 192.168.1.112
原文:https://blog.csdn.net/kxwinxp/article/details/78370913
=============================================================================
补充解决方法
-------------
解决方法 1
-------------
对于我来说,在内网的进行的一些测试,为了方便,选择最低的安全级别。在.ssh/config(或者/etc/ssh/ssh_config)中配置:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
(注:这里为了简便,将knownhostfile设为/dev/null,就不保存在known_hosts中了)
---------------
解决方法 2
---------------
vi ~/.ssh/known_hosts
删除对应ip的相关rsa信息
---------------
解决方法 3
---------------
rm known_hosts