当你在使用 SSH 连接远程服务器时遇到 "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!" 警告,这是 SSH 协议的一项项重要安全机制在起作用,下面是具体解读和处理方法:
你的本地电脑中保存的远程服务器 SSH 公钥(主机密钥),与当前连接的服务器返回的公钥不匹配。
SSH 协议通过记录「已知主机密钥」来防止中间人攻击,当检测到密钥不匹配时,会立即即阻断连接并发出警告。
-
服务器密钥正常变更(安全情况)
- 最常见:服务器重装系统、重建实例或管理员主动更换了 SSH 密钥
- 次要原因:SSH 服务升级、配置变更导致密钥重新生成
-
潜在的中间人攻击(危险情况)
- 有人在你的设备和目标服务器之间拦截通信,伪造造成目标服务器,试图窃取你的登录信息
- 这种情况下,虚假服务器的密钥与你本地记录的合法密钥必然不匹配,从而触发警告
这是最关键的一步!
- 联系服务器管理员或运维人员,询问:
" 服务器 x.x.x.x
的 SSH 主机机密钥最近是否有变更?新的 ED25519 密钥指纹是什么?"
- 管理员提供的指纹需与警告中显示的
SHA256:DdkQGG1unkXle5hUAhFGGZ2HxK5jORxsLEsmcp5XdaY
完全一致,才能确认安全。
删除本地记录的旧密钥,重新保存新密钥:
-
打开终端令行(Windows 可使用 PowerShell 或 Git Bash),执行行以下命令删除旧记录:
(x.x.x.x
替换为实际服务器 IP 地址)
-
重新新尝试连接服务器:
-
此时会提示确认新密钥,再次核对显示的指纹与管理员提供的是否一致,确认后输入 yes
保存,即可正常连接。
- 立即停止连接! 这可能是中间人攻击,尤其在公共 Wi-Fi 等非可信网络环境中
- 更换网络环境(如使用公司内网、个人热点)后重试,排除本地网络被劫持的可能
- 再次联系管理员核实,在确认安全前,绝不要绕过警告强行连接
不要使用 ssh -o StrictHostKeyChecking=no 用户名@x.x.x.x
命令!
这条命令会禁用 SSH 的主机密钥检查,虽然能临时绕过警告,但会完全失去对中间人攻击的防护,可能导致账号密码泄露。
这个警告是 SSH 协议的重要安全屏障,绝不能忽视。
处理的核心原则是:先通过管理员确认密钥变更的合法性和新指纹的正确性,再删除旧记录并保存新密钥。
只有在确认安全的前提下,才能继续连接服务器。