ssh 登陆警告WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

由于最近给服务器重装系统的原因,ssh登陆出现警告,并且登陆失败。

如下:

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
Host key verification failed.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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:Hi/ePQ6HFSLTTK0AZitfqPr461xuxduxFTzQ9n7Ztek.
Please contact your system administrator.
Add correct host key in /Users/jeeinn/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/jeeinn/.ssh/known_hosts:24
ECDSA host key for 52.52.172.129 has changed and you have requested strict checking.
Host key verification failed.

原因:

本机的 ssh 会把你每个访问过计算机(主机)的公钥(public key)都记录在 ~/.ssh/known_hosts 文件当中。当下次访问相同计算机(主机)时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。

当一台主机上有多个Linux系统,或者同一个主机上重新安装了系统,那么这些系统使用了同一 ip 地址或者同一公有DNS,登录过一次后 ssh 就会把主机的信息记录在本地的 ~/.ssh/known_hsots 文件中,切换该系统后再用 ssh 访问这台主机就会出现冲突警告,需要手动删除修改 known_hsots 里面的内容。

有两个解决方案:
1. 手动删除或修改 ~/.ssh/known_hsots 里面的相关主机的内容;
2. 修改配置文件 ~/.ssh/config ,加上这两行,重启服务器。
StrictHostKeyChecking no
UserKnownHostsFile /dev/null

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

参考文章:http://blog.csdn.NET/yasaken/article/details/7348441

Author: thinkwei

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注