Mam serwer (załóżmy, że jego adres IP to abcd), który pozwala użytkownikom zalogować się przez ssh. Teraz chcę zmienić fizyczną maszynę, zachowując IP bez zmian. Aby nowy komputer był nadal dostępny dla takiego użytkownika
$ ssh abcd
Problem polega na tym, że za każdym razem, gdy jeden użytkownik próbuje się zalogować, pojawia się następujący błąd niedopasowania klucza ssh.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @ OSTRZEŻENIE: ZMIENIŁO SIĘ ZDALNA IDENTYFIKACJA HOSTA! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ JEST MOŻLIWE, ŻE KTOŚ KORZYSTA Z NIESAMOWITEJ! Ktoś może cię teraz podsłuchiwać (atak człowieka w środku)! Możliwe jest również, że klucz hosta RSA został właśnie zmieniony. Odcisk palca dla klucza RSA wysłanego przez zdalny host to 02: dc: c6: 18: 1b: 34: b7: 1d: fa: 90: ab: e1: 95: 48: 69: 84. Skontaktuj się z administratorem systemu. Dodaj poprawny klucz hosta w /home/user/.ssh/known_hosts, aby pozbyć się tej wiadomości. Obrażanie klucza w /home/user/.ssh/known_hosts:37 Klucz hosta RSA dla absolwentów został zmieniony i zażądano dokładnego sprawdzenia. Weryfikacja klucza hosta nie powiodła się.
Wiem, że użytkownik może usunąć wiersz # 37 z pliku ~ / .ssh / known_hosts i następnym razem otrzyma monit o tak / nie. Chcę, aby użytkownik był nieświadomy tej wymiany całego urządzenia i otrzymał monit o podanie hasła.
Jak to zrobić?
ssh
to jedyną ochronę przed atakami człowieka w środku i może skutkować wysłaniem hasła bezpośrednio do atakującego zamiast do zamierzonej maszyny? Chyba że wiesz, że nie jesteś odporny na aktywne ataki (na przykład jesteś w tej samej bezpiecznej sieci wewnętrznej, co komputer docelowy), to niszczyssh
model bezpieczeństwa.Odpowiedzi:
Jak wspomniano w Ethabell , możesz skopiować aktualne klucze hosta na nowy serwer.
Możesz znaleźć klucze hosta, otwierając
sshd_config
plik (w pudełku mojego Ubuntu 12.04/etc/ssh/sshd_config
). W pliku konfiguracyjnym poszukajHostKey
wpisów. Te wpisy powiedzą ci, gdzie znajdują się pliki kluczy hosta. Powinieneś być w stanie skopiować te pliki na nowy serwer i zaktualizować nowy serwer,sshd_config
aby wskazywał na skopiowane klucze (lub po prostu nadpisać pliki, które już istnieją na nowym serwerze).Zwróć też uwagę na tę sekcję ze strony podręcznika
sshd_config
, w szczególności część dotyczącą uprawnień:źródło
Jeśli posiadasz oryginalny klucz hosta, możesz go przywrócić, co zatrzyma błąd.
Lub możesz wyłączyć StrictHostKeyChecking w pliku konfiguracyjnym sshd.
... Robienie tego jest jednak okropnym, okropnym pomysłem. Jeśli istnieje sposób, aby po prostu uruchomić się
ssh-keygen -R server.example.com
na komputerach klienckich, byłby to najlepszy sposób - ponieważ wyłączenie sprawdzania klucza hosta jest jak powiedzenie: „Hej. Zaatakuj mnie”. Kiedy coś się zmienia, chcę być niejasny, ale bezpieczeństwo powinno być priorytetem nr 1 w stosunku do ukrywania zmian.źródło
Możesz spróbować w ten sposób
Zauważ, że jeśli folder .ssh jeszcze nie istnieje, powyższe polecenie zakończy się niepowodzeniem. Ponadto przy tworzeniu pliku może być lepsze ustawienie minimalnego możliwego uprawnienia (w zasadzie tylko do odczytu i zapisu tylko dla właściciela). Oto bardziej zaawansowane polecenie:
Aby uzyskać więcej informacji na temat tego problemu, musisz przejść do tej witryny: Błąd zmiany klucza hosta SSH
źródło