求助:遭遇“Remote host identification has changed”报错循环
解决SSH "REMOTE HOST IDENTIFICATION HAS CHANGED!" 报错问题
嘿,这个报错我太熟了!你碰到的是SSH核心安全机制在报警——它检测到当前远程主机的密钥和你本地缓存的不一样了,所以弹出了这个警告。先别慌,咱们拆解下原因和解决办法:
为什么会出现这个报错?
这个警告分两种可能场景:
- 风险场景:真的存在中间人攻击,有人在你和目标主机之间拦截了连接,伪造了主机身份(这种情况要警惕!)
- 正常场景:更常见的是远程主机做了系统重装、更换SSH服务配置、服务器迁移这类操作,导致主机密钥被重新生成了。
快速解决步骤
根据你的操作系统,选对应的方法:
Linux/macOS 或 Git Bash/WSL(Windows)
方法1:用命令一键清理旧密钥
直接在终端运行:ssh-keygen -R 你的远程主机IP或域名比如目标主机IP是
192.168.1.50,就输入ssh-keygen -R 192.168.1.50;如果是域名myserver.com,就用ssh-keygen -R myserver.com。这个命令会自动删除本地~/.ssh/known_hosts文件里对应主机的旧密钥记录。之后重新发起SSH连接,系统会提示你确认新的主机密钥指纹,输入
yes回车就可以正常连接了。方法2:手动编辑known_hosts文件
打开终端,编辑~/.ssh/known_hosts文件(可以用nano ~/.ssh/known_hosts或者你习惯的编辑器),找到包含目标主机IP/域名的那一行,删除它,保存退出后重新连接即可。
Windows(PuTTY用户)
打开PuTTY客户端:
- 在左侧导航栏依次展开「Connection」→「SSH」→「Host Keys」
- 在右侧列表里找到对应远程主机的密钥条目,选中后点击「Remove」删除
- 重新发起连接,PuTTY会提示你确认新的主机密钥,点击「Yes」完成验证。
重要提醒
如果不确定主机密钥变更是正常操作,一定要先联系服务器管理员确认新的密钥指纹,排除中间人攻击的风险后再进行上述操作!
内容的提问来源于stack exchange,提问作者Kirill Kochetov
相关产品推荐
相关产品推荐

