该报错表明本地~/.ssh/known_hosts中存储的远程服务器公钥指纹已失效,通常因服务器重装系统、更换硬件或恢复出厂设置所致;推荐使用ssh-keygen -R [IP或域名]精准删除对应条目,确保SSH连接可正常重建信任关系。

Mac上遇到“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED”报错,说明本地~/.ssh/known_hosts里存的旧服务器公钥指纹已失效——这通常发生在服务器重装系统、更换硬盘、升级固件或飞牛NAS恢复出厂设置后,你必须精准清除对应条目,否则SSH连接会被强制中断,连输密码的机会都没有。
用 ssh-keygen -R 精准删除指定主机记录(推荐首选)
这是最安全、最标准的方式,不破坏文件结构,不影响其他主机的信任关系。
打开终端,执行:ssh-keygen -R example.com(把example.com换成你实际访问的域名)
如果用的是IP地址连接,比如192.168.1.50,就运行:ssh-keygen -R 192.168.1.50
若服务器使用非标端口(如2222),必须加方括号:ssh-keygen -R [192.168.1.50]:2222。漏掉方括号会导致命令静默失败,【条目根本没删掉】。
执行后建议立即验证是否清干净:运行grep -n "192.168.1.50" ~/.ssh/known_hosts,无任何输出才表示删除成功;若有输出,说明known_hosts中存的是哈希格式或用了别名,需改用ssh-keygen -F定位后再删。
手动编辑 known_hosts 文件(适合复杂匹配)
当目标主机在known_hosts中以哈希形式存储、含通配符、或需批量核对多行时,nano直接编辑更可控。
第一步:进入目录 → cd ~/.ssh
第二步:用nano打开 → nano known_hosts
第三步:按Ctrl+W搜索IP或域名,找到整行(注意:每行末尾不能有残缺换行,否则SSH读取会报错)
GitHub Hosts 更新工具(仅限中国用户),安全更新系统hosts文件,保留原有非GitHub条目,仅替换GitHub相关地址。支持备份恢复和风险提示。用于解决GitHub访问问题。
第四步:光标移至行首,按Ctrl+K剪切整行 → 按Ctrl+O保存 → 按Enter确认文件名 → 按Ctrl+X退出
彻底清空 known_hosts(仅限重置场景)
适合刚接手一台旧Mac、或所有SSH连接都出现密钥冲突且无法逐个排查时使用。
执行:rm ~/.ssh/known_hosts
如果提示“Operation not permitted”,说明启用了SIP保护,改用:rm -f ~/.ssh/known_hosts
下次任意ssh连接都会像首次一样弹出Are you sure you want to continue connecting (yes/no)?提示,自动重建新记录。
顺手清理关联残留项
只删known_hosts不够——Terminal历史里可能还存着ssh user@192.168.1.50这类敏感命令。
清空Terminal命令历史:运行defaults delete ~/Library/Preferences/com.apple.Terminal.plist PreviousCommands,然后重启Terminal
检查~/.ssh/config是否存在,里面可能配置了Host别名、端口映射或IdentityFile路径,按需编辑或删除
确认不再使用的私钥(如id_rsa_old)可安全删除,但【千万别误删当前正在用的id_rsa或id_ed25519】

















