Nie można połączyć się z instancją AWS EC2 - „Błąd weryfikacji klucza hosta”


13

Skonfigurowałem instancję Ubuntu z pakietem Rails, wdrożyłem moją aplikację i działa dobrze.

Ale gdy próbuję zrobić SSH, to nie pozwala mi do zdalnego logowania i wyrzuca błędy jak: Host key verification failed.

Problem wydaje się być uporczywy. Dołączyłem Elastyczny adres IP do tego wystąpienia i nie widzę publicznego DNS.

Moja instancja działa w regionie Singapuru.

ssh wyjście debugowania:

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.

Musisz nam powiedzieć, jakie dokładnie błędy masz. Powiedzenie nam, jak wyglądał jeden z błędów, nie jest pomocne.
David Schwartz,

Odpowiedzi:


19

Gdy łączysz się z serwerem ssh, klient ssh przechowuje listę zaufanych hostów jako pary klucz-wartość dla odcisków palców serwera IP i ssh. W ec2 często używasz tego samego adresu IP z kilkoma instancjami serwera, co powoduje konflikt.

Jeśli podłączyłeś się do wcześniejszej instancji ec2 za pomocą tego adresu IP, a teraz łączysz się z nową instancją o tym samym adresie IP, komputer narzeka na „Nieudana weryfikacja hosta”, ponieważ poprzednio przechowywana para nie pasuje już do nowej pary.

Komunikat o błędzie informuje, jak to naprawić:

Obrażanie klucza RSA w /home/ubuntu/.ssh/known_hosts:1
usuń za pomocą: ssh-keygen -f "/home/ubuntu/.ssh/known_hosts" -R 46.137.253.231 "

Alternatywnie wystarczy otworzyć /home/ubuntu/.ssh/known_hosts i usunąć wiersz 1 (zgodnie z oznaczeniem „: 1”).

Możesz teraz połączyć się i otrzymać nową weryfikację hosta.

Pamiętaj, że zwykle plik znane_hosty ssh zwykle zawiera drugą parę linii dla nazwy hosta lub wartości ip6, więc może być konieczne usunięcie kilku linii.

Ostrzeżenie: weryfikacja hosta jest ważna i jest to dobry powód, dla którego pojawia się to ostrzeżenie. Upewnij się, że oczekujesz niepowodzenia weryfikacji hosta. Nie usuwaj pary klucz-wartość weryfikacyjna, jeśli nie jesteś pewien.


Ja to zrobiłem. Teraz pojawia się ten błąd: Odmowa dostępu (publickey). Jakikolwiek pomysł, jak to rozwiązać, ponieważ plik klucza publicznego był wystarczająco dobry podczas ostatniego dostępu do mojego serwera AWS.
Najeeb

11

Odpowiedź @flurdy jest dobra jako jednorazowa rozdzielczość.

Ale jeśli często:

  • uruchom nowe instancje EC2,
  • uruchamiać i zatrzymywać instancje EC2,

..without stosując elastyczne IP (stałe przymocowany do serwerów), wówczas mamy do czynienia z nowym / IPS / zmianie nazwy hostów z wystąpień cały czas .

Jeśli tak, to możesz chcieć trwale zatrzymać sprawdzanie SSH i przechowywanie odcisków palców serwera dla publicznych nazw hostów EC2 .


Aby to zrobić, po prostu dodaj to do ~/.ssh/config:

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


Należy pamiętać, że SSH nadal powie Warning: Permanently added (...) to the list of known hosts.przy łączeniu, ale oznacza to, że dodał go do /dev/null...

SSH przestanie jednak pytać, czy ty confirm the authenticity of hosti po prostu kontynuujesz połączenie.

Jest to więc wygodniejsze i możesz uniknąć nie zawsze wystarczającej liczby błędów połączenia SSH podczas korzystania z instancji EC2.


Muszę dodać, że teoretycznie to ustawienie obniża bezpieczeństwo połączeń SSH, ale w rzeczywistości prawdopodobnie i tak nie sprawdziłbyś odcisków palców swoich jednorazowych instancji EC2.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.