SSH主机密钥变更警告是安全提醒而非连接故障,需先核对服务器新指纹(如SHA256:xxxxxx),再用ssh-keygen -R IP精准删除旧记录,重新连接时确认无误后输入yes信任新密钥。
别急着输 yes——这个警告不是连接故障,而是你的 mac 在提醒:你正准备把敏感操作(比如输入密码、传输密钥、执行部署命令)交给一个“脸不对”的服务器。
先确认是不是真变了
这不是误报。SSH 主机密钥变更是真实事件,常见于:
- 远程服务器重装系统或升级固件(如飞牛NAS恢复出厂、树莓派刷镜像)
- 云主机重建、Docker容器重启后IP复用
- 管理员手动删除或替换了
/etc/ssh/ssh_host_*.key - 同一IP被不同设备临时占用(比如路由器分配了之前用过的地址)
如果你能联系到服务器负责人,直接核对新指纹最稳妥。终端里显示的那串 SHA256:xxxxxx 就是它的新“数字指纹”,让对方从服务器上运行 ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key 或类似命令提供比对值。
安全删旧记录(推荐命令行)
打开终端,执行这一行(把 192.168.1.100 换成你连的IP或域名):
ssh-keygen -R 192.168.1.100
它会自动定位并删除 ~/.ssh/known_hosts 中对应条目,比手动编辑更准,不会误删其他主机记录。如果提示“Host not found in known_hosts”,说明该主机此前没存过密钥,可跳过这步。
重新连接并信任新密钥
再运行连接命令,例如:
ssh user@192.168.1.100
这时会弹出新提示,显示新密钥指纹,并问你是否继续。确认无误后输入 yes,Mac 就会把新指纹写入 known_hosts,后续连接不再报警。
进阶:批量处理或避免反复出现
如果你常连多台测试机或CI/CD中频繁重建环境,可以:
- 在
~/.ssh/config中为特定主机关闭严格校验(仅限可信内网):Host 192.168.1.*<br> StrictHostKeyChecking no<br> UserKnownHostsFile /dev/null
- 用脚本批量清理:
for ip in 192.168.1.{10..20}; do ssh-keygen -R "$ip"; done - 若连的是 GitHub/Gitee 等平台,密钥变更极罕见;一旦出现,务必先查官方公告或联系支持,切勿盲目接受。
不复杂但容易忽略:每次删完旧记录、接受新密钥前,多看一眼指纹是否和可信来源一致。这是 SSH 安全模型真正起作用的地方。

















