Verbindung zur AWS EC2-Instanz kann nicht hergestellt werden - "Überprüfung des Hostschlüssels fehlgeschlagen"


13

Ich hatte eine Ubuntu-Instanz mit einem Rails-Paket eingerichtet, meine App bereitgestellt und es funktioniert einwandfrei.

Aber wenn ich versuche , SSH zu tun, ist es mir erlaubt , nicht für die Remote - Login und wirft Fehler wie: Host key verification failed.

Das Problem scheint hartnäckig zu sein. Ich habe die Elastic IP an diese Instanz angehängt und kann das öffentliche DNS nicht sehen.

Meine Instanz wird in der Region Singapur ausgeführt.

ssh Debug-Ausgabe:

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.

Sie müssen uns die genauen tatsächlichen Fehler mitteilen, die Sie haben. Uns zu sagen, wie einer der Fehler war, ist nicht hilfreich.
David Schwartz

Antworten:


18

Wenn Sie eine Verbindung zu einem SSH-Server herstellen, speichert Ihr SSH-Client eine Liste vertrauenswürdiger Hosts als Schlüssel-Wert-Paare aus IP und SSH-Server-Fingerabdruck. Mit ec2 verwenden Sie häufig dieselbe IP mit mehreren Serverinstanzen, was zu Konflikten führt.

Wenn Sie mit dieser IP-Adresse eine Verbindung zu einer früheren ec2-Instanz hergestellt haben und nun eine Verbindung zu einer neuen Instanz mit derselben IP-Adresse herstellen, meldet Ihr Computer "Host-Überprüfung fehlgeschlagen", da das zuvor gespeicherte Paar nicht mehr mit dem neuen Paar übereinstimmt.

In der Fehlermeldung erfahren Sie, wie Sie das Problem beheben können:

Beleidigender RSA-Schlüssel in /home/ubuntu/.ssh/known_hosts:1
entfernen mit: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts" -R 46.137.253.231 "

Alternativ öffnen Sie einfach /home/ubuntu/.ssh/known_hosts und löschen Zeile 1 (wie durch ": 1" angegeben).

Sie können jetzt eine Verbindung herstellen und eine neue Host-Bestätigung erhalten.

Beachten Sie, dass in der Regel in der Datei known_hosts von ssh ein zweites Zeilenpaar für den Hostnamen oder den IP6-Wert gespeichert ist, sodass möglicherweise einige Zeilen entfernt werden müssen.

Warnung: Die Überprüfung des Hosts ist wichtig und ein guter Grund, warum Sie diese Warnung erhalten. Stellen Sie sicher, dass die Hostüberprüfung fehlschlägt. Entfernen Sie das Schlüssel-Wert-Paar der Überprüfung nicht, wenn Sie sich nicht sicher sind.


Ich habe das gemacht. Jetzt erhalte ich diesen Fehler: Erlaubnis verweigert (publickey). Ich habe eine Idee, wie ich das beheben kann, da die öffentliche Schlüsseldatei beim letzten Zugriff auf meinen AWS-Server gut genug war.
Najeeb

11

Die Antwort von @flurdy ist eine einmalige Lösung.

Aber wenn Sie oft:

  • neue EC2-Instanzen starten,
  • EC2-Instanzen starten und stoppen,

..ohne Verwendung von Elastic IPs (permanent an Ihre Server gebunden), werden Sie die ganze Zeit mit neuen / sich ändernden IPs / Hostnamen Ihrer Instanzen fertig .

In diesem Fall möchten Sie möglicherweise die SSH-Überprüfung und Speicherung von Serverfingerabdrücken für öffentliche EC2-Hostnamen dauerhaft beenden .


Fügen Sie dazu einfach Folgendes hinzu ~/.ssh/config:

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


Bitte beachten Sie, dass SSH beim Herstellen der Warning: Permanently added (...) to the list of known hosts.Verbindung weiterhin anzeigt , dass es jedoch hinzugefügt wurde, um /dev/null...

SSH fragt Sie jedoch nicht mehr confirm the authenticity of hostund setzt die Verbindung einfach fort.

Dies ist praktischer und Sie können vermeiden , dass bei der Verwendung Ihrer EC2-Instanzen nicht immer genügend SSH-Verbindungsfehler auftreten .


Ich muss hinzufügen, dass diese Einstellung theoretisch die Sicherheit Ihrer SSH-Verbindungen senkt, aber im wirklichen Leben würden Sie wahrscheinlich die Fingerabdrücke Ihrer einmaligen EC2-Instanzen sowieso nicht überprüfen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.