WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
问题背景
当我们尝试通过SSH(Secure Shell)连接到远程服务器时,有时会遇到一个警告信息:“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”
。这个消息表明SSH客户端检测到远程主机的身份(即其SSH密钥)与之前记录在 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:pcb66b5/nvAdJqpH6HWb9SvFr+CH82qqL3XQNxGL3Uw.
Please contact your system administrator.
Add correct host key in ~/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in ~/.ssh/known_hosts:26
ECDSA host key for [111.222.113.114]:36000 has changed and you have requested strict checking.
Host key verification failed.
这种情况通常发生于以下几种场景之一:
- 服务器更换了SSH密钥: 这可能是因为服务器的操作系统被重新安装或SSH服务的密钥被重新生成。
- 网络安全问题: 可能存在中间人攻击,有人试图拦截或篡改您的SSH连接。
- 本地known_hosts文件错误: 如果之前连接过同一个IP地址的不同服务器,或者手动编辑过该文件,也可能导致这个问题。
解决方案
从 known_hosts
文件中删除有关该服务器的旧密钥:
ssh-keygen -f "~/.ssh/known_hosts" -R "111.222.113.114"
或者更暴力一点,直接
rm ~/.ssh/known_hosts