更换Oracle Linux 7.9服务器SSH密钥对后仍提示旧密钥指纹的问题求助
更换Oracle Linux 7.9服务器SSH密钥对后仍提示旧密钥指纹的问题求助
这种情况我之前也碰到过,别慌,咱们一步步来排查解决:
先确认服务器端的SSH服务配置与密钥文件
有时候SSH服务可能加载了没注意到的旧密钥文件,或者配置里还指向着旧文件:- 查看SSH服务的配置文件,执行命令:
cat /etc/ssh/sshd_config,找到所有以HostKey开头的行,确认这些行指定的文件路径都是你替换后的新密钥文件,没有遗留旧的路径。 - 核对密钥文件的指纹是否匹配新密钥,比如你看到的是ECDSA 256类型的密钥,就执行:
ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key,把输出的指纹和你连接时看到的旧指纹对比,确保服务器上的这个文件确实是新密钥。
- 查看SSH服务的配置文件,执行命令:
务必重启SSH服务
哪怕你替换了密钥文件,如果没重启SSH服务,它还是会缓存旧的密钥信息!执行命令重启服务:sudo systemctl restart sshd # 或者如果你的系统用的是service命令: sudo service sshd restart本地Windows端的细节排查
你已经清理过known_hosts,但可能还有遗漏的地方:- 确认有没有多个known_hosts文件:Windows下OpenSSH的用户级known_hosts在
C:\Users\<你的用户名>\.ssh\known_hosts,还有系统级的C:\ProgramData\ssh\ssh_known_hosts,把这两个文件里对应你服务器的条目都删掉。 - 检查SSH配置文件(
C:\Users\<你的用户名>\.ssh\config),有没有设置HostKeyAlias或者其他可能关联旧密钥的配置,如果有就注释掉或删除。 - 重启CMD窗口甚至电脑,避免OpenSSH进程残留缓存的连接信息。
- 确认有没有多个known_hosts文件:Windows下OpenSSH的用户级known_hosts在
确认连接的目标服务器正确
有没有可能你连接的主机名解析到了错误的IP?比如本地DNS缓存了旧地址,导致你实际上连的是别的服务器?试试用服务器的IP直接连接,或者执行ping <你的服务器主机名>确认IP是否正确。检查服务器上的SSH进程
看看有没有多个SSH服务在运行,比如有没有其他端口的sshd进程还在用旧密钥?执行命令:sudo netstat -tulpn | grep sshd,确认只有一个SSH进程在监听默认的22端口,且使用的是正确的配置。
如果以上步骤都试过还是没解决,可以把服务器上sshd_config里的HostKey相关内容,还有本地连接时的具体命令贴出来,方便进一步排查。
备注:内容来源于stack exchange,提问作者Retinova
相关产品推荐
相关产品推荐

