AWS EC2インスタンスに接続できません-「ホストキーの検証に失敗しました」


13

Railsパッケージを使用してUbuntuインスタンスを設定し、アプリをデプロイしましたが、正常に動作しています。

しかし、SSHを実行しようとすると、リモートログインが許可されず、次のようなエラーがスローされますHost key verification failed

問題は永続的なようです。そのインスタンスにElastic 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.

正確な実際のエラーを教えてください。エラーの1つがどのようなものであったかを伝えることは役に立ちません。
デビッドシュワルツ

回答:


18

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値の2行目のペアが格納されているため、数行を削除する必要がある場合があります。

警告:ホストの確認は重要であり、この警告が表示されるのは正当な理由です。ホスト検証が失敗することを期待していることを確認してください。確認できない場合は、検証キーと値のペアを削除しないでください。


やった 今、このエラーが発生しています:許可が拒否されました(公開キー)。AWSサーバーに最後にアクセスしたときに公開キーファイルが十分に良かったため、これを解決する方法はありません。
ナジーブ

11

@flurdyの答えは、1回限りの解決策として適しています。

しかし、頻繁に:

  • 新しいEC2インスタンスを起動し、
  • EC2インスタンスの起動と停止、

..Elastic IP(サーバーに永続的に接続されている)を使用せずに、インスタンスの新しい/変更するIP /ホスト名を常に処理します。

その場合、SSHチェック永久に停止し、EC2パブリックホスト名のサーバーフィンガープリントを保存することができます


これを行うには、これを以下に追加します~/.ssh/config

# AWS EC2 public hostnames (changing IPs)
Host *.compute.amazonaws.com 
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null


SSHはWarning: Permanently added (...) to the list of known hosts.接続時にも言うが、単に追加したことを意味することに注意してください/dev/null...

ただし、SSHはconfirm the authenticity of host接続を続行するかどうかの確認を停止します。

そのため、より便利であり、EC2インスタンスの使用中に常に十分なSSH接続エラー冗長化することを避けることができます。


理論的には、この設定によりSSH接続のセキュリティが低下するが、実際には、とにかく1回限りのEC2インスタンスのフィンガープリントをチェックしないと付け加えなければならない。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.