注意:
本文相关 Linux 配置及说明已在 CentOS 6.5 64 位操作系统中进行过测试。其它类型及版本操作系统配置可能有所差异,具体情况请参阅相应操作系统官方文档。
问题描述
使用 SSH 登录 Linux 实例时,出现类似如下错误信息,导致无法正常连接。
Linux 环境连接报错信息:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
ae:6e:68:4c:97:a6:91:81:11:38:8d:64:ff:92:13:50.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:70
RSA host key for x.x.x.x has changed and you have requested strict checking.
Host key verification failed.
Windows 环境,以常见的 SSH 客户端为例,连接报错:X.X.X.X (端口:XX)的主机密钥与本地主机密钥数据库中保存的不一致。主机密钥已更改或有人试图监听此连接。若无法确定,建议取消此连接。
问题原因
Linux 实例系统重装、账户信息变更等致使其 SSH 公钥变更,造成客户端保存的公钥指纹与服务器端不一致,导致 SSH 认证失败,拒绝登录。
处理办法
客户端是 Windows 环境
如果客户端是 Windows环境,而且使用 SSH 客户端 Putty 连接 Linux 实例,您可以按以下步骤操作:
- 启动 Putty。
在登录页面删除登录会话。
重新使用用户名及密码登录实例,确认保存新的公钥指纹后,即可成功登录。
说明:
您也可以在弹出相关告警信息时,直接单击 接收并保存,让程序自动更新密钥指纹信息,就可以继续正常登录。
客户端是 Linux 环境
如果客户端是 Linux 环境,您可以按以下步骤操作:
运行以下命令,进入对应账号的 known_hosts 文件:
vi ~/.ssh/known_hosts
在返回结果中(如下图所示),找到 Linux 实例 IP 对应的条目,按以下步骤将其删除:
- 按
i
键进入编辑模式。 - 删除 Linux 实例 IP 对应的条目。
- 按
:wq
保存并退出文件。
- 按
重新连接 Linux 实例,确认保存新的公钥指纹后,即可成功登录。
如果还有问题,可以参考 云服务器 ECS Linux SSH 无法登录问题排查指引 做进一步排查分析。