系统重装之后,通过ssh无法登录
系统重装之后,通过ssh登录的时候报错: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:0Vhha2ZvN74HKh2vvQpS3zk. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending ED25519 key in /var/lib/sss/pubconf/known_hosts:6 ECDSA host key for 10.2.2.15 has changed and you have requested strict Host key verification failed.
这个错误是由于系统重装后,远程主机的SSH密钥发生了变化,而本地计算机的 known_hosts
文件中仍然保存着旧的密钥记录。SSH客户端检测到这种不一致,出于安全考虑会拒绝连接,以防止中间人攻击(MITM)。
可能原因 | 解决方案 |
---|---|
known_hosts 缓存问题 | ssh-keygen -R 10.2.2.15 或删除相关文件 |
SSH 服务端密钥丢失 | 在目标服务器运行 sudo ssh-keygen -A |
DNS/IP 冲突 | 检查 ping 和 arp |
防火墙/网络问题 | 检查 telnet 10.2.2.15 22 |
SSH 客户端强制检查 | 临时加 -o StrictHostKeyChecking=no |
如果仍然无法解决,请检查:
-
完整的
ssh -vvv root@10.2.2.15
输出(调试信息)。 -
目标服务器的
/etc/ssh/sshd_config
是否有特殊配置。
解决法:
1、先检查dns上是否有原来的ip的记录,nslookup 10.2.2.15 ,如果有相关的记录,则删除相关的记录,再重新加到dns或者重新加域。
2、清除缓存或者密钥记录
方法 1:删除旧的密钥记录(推荐)
-
打开终端,运行以下命令删除旧记录
ssh-keygen -R 10.2.2.15
(
10.2.2.15
是目标主机的IP或主机名,替换成你的实际地址) -
重新连接,系统会提示你接受新的主机密钥:
ssh root@10.2.2.15
方法 2:手动编辑 known_hosts
文件
-
找到报错中提到的
known_hosts
文件(如/root/.ssh/known_hosts
或/var/lib/sss/pubconf/known_hosts
)。 -
用文本编辑器(如
vim
或nano
)打开该文件:nano /var/lib/sss/pubconf/known_hosts
-
删除与
10.2.2.15
相关的行(报错中提到的第6行)。 -
保存文件并重新连接。
方法 3:临时关闭严格主机密钥检查(不推荐,仅用于测试)
如果只是临时测试,可以禁用严格检查(不安全,慎用):
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@10.2.2.15
用超级管理员root 清除服务器缓存:sss_cache -E
但长期使用会降低安全性。