Otrzymałem ten komunikat dzisiaj, gdy próbuję zalogować się na mój serwer. Co powinienem zrobić? Co się dzieje?
$ ssh 10.10.10.69
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:8
RSA host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.
Odpowiedzi:
Czy ostatnio ponownie instalowałeś system operacyjny na swoim serwerze? To by to spowodowało.
Aby to naprawić: http://www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/
Rozwiązanie nr 1: Usuń klucze za pomocą ssh-keygen
Użyj
-R
opcji, aby usunąć wszystkie klucze należące do nazwy hosta ze znanego pliku hosta. Ta opcja jest przydatna do usuwania mieszanych hostów. Jeśli Twoja zdalna nazwa hosta to server.example.com, wprowadź:Teraz możesz bez problemu połączyć się z hostem.
Rozwiązanie nr 2: Dodaj poprawny klucz hosta
/home/user/.ssh/known_hosts
Nie jest konieczne usuwanie całego pliku znanego_hosta, tylko linia obrażająca w tym pliku. Na przykład, jeśli masz 3 serwery w następujący sposób.
Aby usunąć drugi serwer (myserver.com), otwórz plik:
I naciśnij polecenie dd, aby usunąć linię. Zapisz i zamknij plik. Lub użyj następujących
Teraz przejdź do wiersza # 2, wpisz następujące polecenie
Teraz usuń wiersz za pomocą dd i zakończ:
Lub możesz użyć polecenia sed w następujący sposób, aby usunąć obrażający klucz w linii nr 44:
Rozwiązanie 3: Po prostu usuń plik znane_hosty Jeśli masz tylko jeden serwer ssh
Spróbuj ponownie połączyć się z ssh
Teraz powinieneś być w stanie połączyć się z serwerem przez ssh:
Następnie pojawi się nowy monit o dodanie klucza
~/.ssh/known_hosts
w następujący sposób:źródło
Z tego, co mogę powiedzieć, wszystkie te odpowiedzi dotyczą tłumienia ostrzeżenia zamiast radzenia sobie z nim. Krótko mówiąc, ostrzeżenie mówi, że serwer nie wygląda tak, jak kiedyś; zobacz https://en.wikipedia.org/wiki/Man_in_the_middle_attack, aby dowiedzieć się, dlaczego może to być niebezpieczne.
Przeczytaj
man ssh
, szczególnie ten rozdział:Aby być bezpiecznym, ty (lub ktoś, komu ufasz) powinieneś najpierw uruchomić to polecenie na serwerze, z którym się łączysz. Otrzymasz odcisk palca podobny do podanego w ostrzeżeniu w pytaniu. Oczywiście często nie masz tych informacji, ale jeśli masz powód, by podejrzewać, że coś jest nie tak, uruchomienie tego polecenia jest sposobem sprawdzenia, czy podpis serwera naprawdę się zmienił, czy może dzieje się coś podejrzanego.
źródło
ssh -o FingerprintHash=md5 example.org
Napotkałem ten sam problem i jeśli nie chcesz usunąć całego
known_hosts
pliku, możesz wykonać następujące polecenie:ssh-keygen -R 10.10.10.69
Nie ma problemu z usunięciem znanych hostów. Musisz tylko dodać każdy serwer, z którym się łączysz, do listy za każdym razem, gdy się z nimi łączysz. Możliwe, że zepsują również twoje skrypty, ponieważ hosty nie są jeszcze zaufane. Alarm pojawia się, gdy podpis hosta (komputer, z którym próbujesz się połączyć, aby wygenerować nowe klucze, zwykle z powodu ponownej instalacji lub rotacji kluczy).
źródło
Jeśli uważasz, że to ostrzeżenie jest fałszywie pozytywne, możesz usunąć swoje / root / ssh / znane_hosty, aby rozpocząć nowe weryfikacje.
źródło
Jeśli niedawno ponownie zainstalowałeś serwer lub w inny sposób zmieniłeś klucz hosta, prawdopodobnie bezpiecznie jest usunąć wiersz 8 z pliku ~ / .ssh / known_hosts i ponownie dodać serwer (przez ssh'ing do niego i odpowiedź „tak „gdy poprosi o weryfikację klucza)
źródło
Ponieważ twój serwer jest w sieci lokalnej, możesz być całkiem pewny siebie.
Jeśli przeinstalowałeś system, jest to normalne, ale zamiast usunąć plik znany_host, zalecam zrobienie tego
echo "" > ~/.ssh/known_hosts
źródło
ssh -q robi to samo.
źródło
Skopiuj ten wiersz, ale wpisz nazwę użytkownika i nazwę hosta / IP dla
user
iremote-server
:Na przykład:
I wklej go na lokalnym terminalu i uruchom. To zadziałało dla mnie.
źródło
W węźle klienta, w którym wydajesz ssh,
Usuń wszystkie linie zaczynające się od adresów IP, które są w tej samej sieci, co adres IP, do którego próbujesz ssh. Zmusi to węzeł klienta do trwałego dodania (ECDSA) do listy znanych hostów.
źródło