注意:
本文相關 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 無法登錄問題排查指引 做進一步排查分析。