Ssh

無法連接到 AWS EC2 實例 - “主機密鑰驗證失敗”

  • June 19, 2020

我已經使用 Rails 包設置了一個 Ubuntu 實例,部署了我的應用程序,它執行良好。

但是當我嘗試使用 SSH 時,它不允許我進行遠端登錄並拋出如下錯誤:Host key verification failed.

問題似乎一直存在。我已將彈性 IP 附加到該實例,但看不到公共 DNS。

我的實例在新加坡地區執行。

ssh調試輸出:

OpenSSH_5.8p1 Debian-7ubuntu1, OpenSSL 1.0.0e 6 Sep 2011
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 46.137.253.231 [46.137.253.231] port 22.
debug1: Connection established.
debug1: identity file st.pem type -1
debug1: identity file st.pem-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-4ubuntu6
debug1: match: OpenSSH_5.5p1 Debian-4ubuntu6 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.8p1 Debian-7ubuntu1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 RSA key sent by the remote host is.
Please contact your system administrator.
Add correct host key in /home/ubuntu/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/ubuntu/.ssh/known_hosts:1
 remove with: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts" -R 46.137.253.231
RSA host key for 46.137.253.231 has changed and you have requested strict checking.
Host key verification failed.

當您連接到 ssh 伺服器時,您的 ssh 客戶端會保留一個受信任主機列表作為 IP 和 ssh 伺服器指紋的鍵值對。使用 ec2,您經常將相同的 IP 與多個伺服器實例重用,這會導致衝突。

如果您已使用此 IP 連接到較早的 ec2 實例,現在連接到具有相同 IP 的新實例,您的電腦將抱怨“主機驗證失敗”,因為其先前儲存的對不再與新對匹配。

錯誤消息告訴您如何修復它:

/home/ubuntu/.ssh/known_hosts:1 中的違規 RSA 密鑰

刪除: ssh-keygen -f “/home/ubuntu/.ssh/known_hosts” -R 46.137.253.231"

替代方法只需打開 /home/ubuntu/.ssh/known_hosts 並刪除第 1 行(如“:1”所示)。

您現在可以連接並接收新的主機驗證。

請注意,通常 ssh 的 known_hosts 文件通常為主機名或 ip6 值儲存了第二行對,因此您可能需要刪除幾行。

警告:主機驗證很重要,這是您收到此警告的一個很好的理由。確保您期望主機驗證失敗。如果不確定,請勿刪除驗證鍵值對。

引用自:https://serverfault.com/questions/342228