Mogę połączyć się z innym komputerem Ubuntu w mojej sieci LAN przez SSH. Na obu komputerach zainstalowałem openssh-server, ale z innego komputera Ubuntu nie mogę połączyć się z komputerem przez SSH i dostałem ten błąd:
Weryfikacja klucza hosta nie powiodła się ...
ssh
z wiersza polecenia.Odpowiedzi:
„Host weryfikacja klucza nie powiodło się” oznacza, że gospodarz klucz zdalnego hosta została zmieniona.
SSH przechowuje klucze hostów hostów zdalnych w
~/.ssh/known_hosts
. Możesz albo edytować ten plik tekstowy ręcznie i usunąć stary klucz (możesz zobaczyć numer linii w komunikacie o błędzie), albo użyćZe strony podręcznika :
(czego dowiedziałem się z odpowiedzi na pytanie Czy można usunąć określony klucz hosta z pliku znanego_hosta SSH? ).
źródło
rm ~/.ssh/*
, tossh -o BatchMode=yes root@somewhere
jeśli nic innego się nie stanie, dostanęHost key verification failed.
Nieważne, jeśli jesteś zawsze interaktywny, ale dotyczy skryptów napotykających ten sam błąd.ssh-keygen -R example.net:7999
dajeHost example.net:7999 not found in known_hosts
.known_hosts
Ponownie usunąłem plik i ssh. Zadziałało.~/.ssh/known_hosts
jest nieczytelnyJeśli działasz w pewnych sytuacjach zdalnych / skryptowych, w których nie masz interaktywnego dostępu do klucza zachęty do dodania hosta, obejdź go w ten sposób:
Ostrzeżenie: na stałe dodano „coś.example.com, 10.11.12.13” (RSA) do listy znanych hostów.
źródło
sh """ssh -o StrictHostKeyChecking=No ec2-user@someIpAddress-e2e sudo service tomcat restart"""
Czasami zdarza się również sytuacja, gdy pracujesz na konsoli szeregowej, a następnie sprawdzenie powyższego polecenia w trybie pełnym
-v
pokazuje,/dev/tty
że nie istnieje, podczas gdy on istnieje.W powyższym przypadku wystarczy usunąć
/dev/tty
i utworzyć dowiązanie symboliczne/dev/ttyS0
do/dev/tty
.Alternatywnie dodaj
id_rsa.pub
do zdalnej lokalizacji, aby hasło nie było wyświetlane i uzyskasz dostęp do logowania.źródło
W moim przypadku było to spowodowane problemem udev - nie było
/dev/tty
węzła urządzenia. Rozwiązaniem było dla mnie tylko:źródło
Na terminalu:
Pojawi się następujący komunikat lub podobny komunikat:
Następnie podłącz do EC2 jak zwykle:
źródło
command-line line 0: Bad yes/no/ask argument.
ponieważ błędnie używasz „Nie” zamiast „Nie” jako argumentuStrictHostKeyChecking
Po prostu dlatego, że drugie Ubuntu wymaga połączenia kluczem, a nie hasłem.
Proponuję używać
sudo dpkg-reconfigure openssh-server
na komputerze, a następnie powinien działać poprawnie. Zresetuje konfigurację dla openssh i powróci do domyślnego uwierzytelnienia hasłem.Druga możliwość polega na tym, że w twoim komputerze jest już klucz do twojego drugiego ubuntu i że zmienił się, nie będąc już rozpoznawany. W takim przypadku musisz edytować plik,
.ssh/authorized_keys
aby usunąć problematyczną linię identyfikującą Twoje Ubuntu.źródło
To jest stary wątek i właśnie natknąłem się na tę odpowiedź, dodam tylko to, co zrobiłem, aby to rozwiązać.
Właśnie spojrzałem na komunikat o błędzie, który mi rzucił, i powiedział, aby uruchomić to polecenie, aby usunąć go z listy hostów. Następnie wykonałem następujące czynności:
Następnie wykonałem polecenia z tego miejsca, dopóki nie mogłem ssh na serwerze.
źródło
Oznacza to, że klucz zdalnego hosta został zmieniony (może to być zmiana hasła hosta),
Twój terminal zaproponował wykonanie tego polecenia jako użytkownik root
Musisz usunąć tę nazwę hosta z listy hostów na komputerze / serwerze. Skopiuj sugerowane polecenie i wykonaj jako użytkownik root.
Mam nadzieję, że to zadziała.
źródło
Powinieneś zmienić swój klucz w ten sposób: Na podstawie podanego błędu znajdź, który klucz hosta zmienił się, na przykład: Obrażanie klucza ECDSA w /Users/user-name/.ssh/known_hosts:5 powiedział, że 5. klucz został zmieniony, więc zrób to:
Uwaga: musisz być rootem lub mieć uprawnienia do sudo.
źródło
musisz umieścić klucz rsa hosta docelowego na hoście źródłowym
/home/user/.ssh/known_hosts
, uruchamiając go na celuźródło
Być może po prostu musisz wpisać „tak”, gdy ssh potwierdzi, że chcesz kontynuować łączenie.
Jak poniżej.
Następnie wprowadź swoje hasło.
Proszę zwrócić uwagę na „Czy na pewno chcesz kontynuować łączenie (tak / nie)? Tak ”. Musisz wpisać tak, nie wchodzić.
źródło
Oprócz ścisłego wyłączania sprawdzania klucza hosta możesz także połączyć się, wpisując:
źródło
pico ~/.ssh/known_hosts
i usuń wszystkie linie, po ponownym połączeniu, a otrzymasz nowy klucz.źródło
ssh-keygen -R hostname
jest lepsze.Moje rozwiązanie pochodzi z tego postu na blogu: Negocjacja algorytmu dla klienta SSH Secure Shell nie powiodła się
Musisz zmodyfikować plik w następujący sposób:
A następnie dodaj:
Zasadniczo wypróbowałeś różne rozwiązania, aż znajdziesz takie, które może rozwiązać Twój problem. Jeśli powyższe rozwiązania nie działają, spróbuj tego. Jeśli ten nie działa tak dobrze, spróbuj innych.
źródło
Po prostu zrób „sudo vi /var/root/.ssh/known_hosts” i usuń linię, która zawiera klucz dla hosta, z którym próbujesz się połączyć i ponownie połączyć.
Nie wiem o Twojej konkretnej sytuacji, ale najprawdopodobniej ten błąd pojawił się wraz z następującym komunikatem:
Jeśli przeczytasz dziennik uważniej, zobaczysz, że klucz, który otrzymałeś od hosta, jest w konflikcie z kluczem, który już masz - w tym przypadku znajduje się on w linii 74 pliku znanego_hosta (Obrażający klucz ECDSA w / var / root / .ssh / known_hosts: 74). Usuń wiersz ze znanych_hostów, zapisz zmiany i ponownie połącz.
źródło
jest jeszcze innym rozwiązaniem tty - czasami ten plik urządzenia ma złe uprawnienia.
źródło