ssh-keygen -R 是精准删除 known_hosts 中失效条目的最安全高效方式,支持域名、IPv4、带端口地址及 IPv6(需方括号),配合 -F 验证可确保彻底清除。

直接用 ssh-keygen -R 命令精准删除失效条目最安全高效,不碰其他主机记录,也不改文件权限或结构。
用 -R 参数删指定主机(推荐首选)
这是标准、无副作用的方式,适用于域名、IP、带端口或 IPv6 地址:
- 删普通域名:
ssh-keygen -R example.com - 删 IPv4 地址:
ssh-keygen -R 192.168.1.100 - 删带端口的地址(注意方括号):
ssh-keygen -R [192.168.1.100]:2222 - 删 IPv6 地址(必须加方括号):
ssh-keygen -R "[2001:db8::1]"
确认是否删干净
执行后建议验证,避免因别名、哈希格式或端口写法差异导致残留:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 用
ssh-keygen -F example.com -f ~/.ssh/known_hosts查询,返回 “No matching entry found” 才算成功 - 或用
grep -n "example.com" ~/.ssh/known_hosts,应无任何输出 - 若仍报 “REMOTE HOST IDENTIFICATION HAS CHANGED”,说明可能用了 IP 替代域名,或 known_hosts 中存的是哈希值,需先用
-F定位再-R删除
其他适用场景的处理方式
当 -R 不够用或需要更彻底操作时:
- 手动编辑:
nano ~/.ssh/known_hosts,逐行查找目标 IP/域名或哈希行,删除后保存 - 清空整个文件(慎用):
rm ~/.ssh/known_hosts,下次连接会重新生成,适合重装环境或全局排查 - 自动化脚本中配合使用:
ssh-keygen -R host && ssh -o StrictHostKeyChecking=accept-new user@host,先清理再自动接受新指纹(比no更安全)
不复杂但容易忽略细节,关键是匹配 known_hosts 中实际存储的格式——是域名、IP、还是带端口的组合,对上了才能一次清掉。

















