Jak naprawić błąd „Ostrzeżenie: identyfikacja hosta zdalnego uległa zmianie!”

Opublikowany: 2024-10-16
Spis treści
  • Zrozumienie ostrzeżenia
  • Sprawdź tożsamość serwera
  • Rozwiązanie 1: Usuń ręcznie stary klucz hosta (Windows, Mac, Ubuntu)
  • Rozwiązanie 2: Wyczyść cały plik znane_hosty (Windows, Mac, Ubuntu)
  • Rozwiązanie 3: Tymczasowo zignoruj ​​sprawdzanie klucza hosta (Windows, Mac, Ubuntu)
  • Rozwiązanie 4: Dodaj ręcznie nowy klucz hosta (Windows, Mac, Ubuntu)
  • Rozwiązanie 5: Sprawdź zmiany DNS lub adresu IP (Windows, Mac, Ubuntu)
  • Najlepsze praktyki pozwalające uniknąć tego problemu w przyszłości (Windows, Mac, Ubuntu)
  • Wniosek

Podczas próby połączenia się ze zdalnym serwerem za pomocą protokołu SSH może pojawić się komunikat o błędzie: „Ostrzeżenie: zmieniono identyfikację hosta zdalnego!” . Ta wiadomość to funkcja bezpieczeństwa używana przez SSH w celu ochrony przed atakami typu man-in-the-middle, podczas których osoba trzecia może przechwycić komunikację z serwerem.

Krótko mówiąc, to ostrzeżenie informuje, że odcisk palca serwera (unikalny identyfikator przechowywany na komputerze lokalnym) nie jest zgodny z tym, co zostało wcześniej zarejestrowane przez SSH. Może to być uzasadniona zmiana, np. ponowna instalacja serwera lub zmiana jego adresu IP, ale może również sygnalizować potencjalne zagrożenie bezpieczeństwa. SSH blokuje połączenie, aby chronić Twój system, dopóki nie zweryfikujesz autentyczności serwera.

W tym artykule omówimy, jak bezpiecznie rozwiązać ten problem na komputerach Mac , Ubuntu (Linux) i Windows , zapewniając bezpieczne dalsze łączenie się bez ignorowania potencjalnych zagrożeń.

Być może zainteresuje Cię przeczytanie: Jak naprawić błąd Odmowa dostępu (Publickey)

Zrozumienie ostrzeżenia

Dlaczego pojawia się ostrzeżenie?

SSH przechowuje odcisk palca klucza zdalnego serwera w pliku o nazwie known_hosts na komputerze lokalnym. Ten odcisk palca służy do sprawdzania, czy łączysz się z tym samym serwerem za każdym razem, gdy używasz SSH. Jeśli odcisk palca serwera ulegnie zmianie, SSH wyświetli ostrzeżenie, ponieważ nie ma pewności, czy tożsamość serwera zmieniła się zgodnie z prawem lub czy ktoś próbuje przechwycić Twoje połączenie.

Typowe scenariusze ostrzeżenia:

  • Ponowna instalacja lub aktualizacja serwera: Jeśli serwer został ponownie zainstalowany, zresetowany lub zaktualizowany, może wygenerować nowy klucz SSH, który nie będzie odpowiadał kluczowi zapisanemu w pliku known_hosts .
  • Zmiana adresu IP: Jeśli adres IP serwera uległ zmianie (np. w wyniku przejścia do nowego dostawcy usług hostingowych lub sieci), SSH może oznaczyć to jako podejrzaną zmianę.
  • Zmiany DNS: Jeśli w rekordach DNS serwera znajdują się aktualizacje lub błędne konfiguracje, SSH może zinterpretować to jako inny serwer.
  • Zmiany konfiguracji serwera: Czasami administratorzy serwerów zmieniają konfigurację klucza SSH, w wyniku czego powstaje nowy klucz, który nie pasuje do poprzedniego.
  • Potencjalne zagrożenie bezpieczeństwa (atak typu Man-in-the-Middle): Ostrzeżenie może być sygnałem, że ktoś próbuje przechwycić Twoje połączenie z serwerem. Jeśli nie masz pewności co do zmian, przed kontynuowaniem koniecznie sprawdź tożsamość serwera.

Rola pliku known_hosts :

Plik known_hosts to miejsce, w którym SSH przechowuje informacje o zdalnych hostach, z którymi wcześniej się łączyłeś. Plik zazwyczaj znajduje się w katalogu ~/.ssh/ na komputerach Mac i Ubuntu, a w przypadku użytkowników PuTTY w systemie Windows przechowuje klucze hosta w rejestrze systemu Windows.

Sprawdź tożsamość serwera

Przed wprowadzeniem jakichkolwiek zmian w celu rozwiązania problemu „ Zmieniła się identyfikacja hosta zdalnego! ” ostrzeżenie, ważne jest, aby sprawdzić, czy tożsamość serwera została zmieniona zgodnie z prawem. Ten krok gwarantuje, że nie padniesz ofiarą ataku typu man-in-the-middle.

Dlaczego powinieneś najpierw zweryfikować tożsamość serwera

Zignorowanie tego kroku może skutkować połączeniem się z przejętym lub złośliwym serwerem, co może narazić Twoje dane lub dane uwierzytelniające na ryzyko. Zawsze traktuj to ostrzeżenie poważnie, szczególnie jeśli nie masz pewności co do ostatnich zmian na serwerze.

Kroki weryfikacji tożsamości serwera:

  • Skontaktuj się z administratorem serwera: Jeśli to nie ty utrzymujesz serwer, skontaktuj się z administratorem lub dostawcą usług hostingowych i zapytaj, czy wprowadzono jakieś ostatnio zmiany, takie jak zmiana adresu IP, ponowna instalacja serwera lub regeneracja klucza.
  • Porównaj odcisk palca klucza hosta: Użyj następującego polecenia, aby ręcznie sprawdzić klucz hosta serwera:
     ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

    Dane wyjściowe pokażą odcisk palca klucza hosta, który możesz porównać z tym w pliku known_hosts lub żądaniem administratora serwera.

Rozwiązanie 1: Usuń ręcznie stary klucz hosta (Windows, Mac, Ubuntu)

Dla komputerów Mac i Ubuntu (Linux):

  1. Otwórz terminal.
  2. Otwórz plik ~/.ssh/known_hosts za pomocą edytora tekstu:
     nano ~/.ssh/known_hosts
  3. Wyszukaj wiersz odpowiadający nazwie hosta lub adresowi IP serwera zdalnego.
  4. Usuń linię zawierającą stary klucz hosta.
  5. Zapisz plik i zamknij edytor tekstu.
  6. Połącz się ponownie z serwerem za pomocą protokołu SSH:
     ssh <username>@<hostname>

Automatyczne usuwanie (Mac i Ubuntu):

Zamiast ręcznie edytować plik known_hosts , możesz użyć następującego polecenia, aby automatycznie usunąć stary klucz hosta:

 ssh-keygen -R <hostname or IP>

Dla systemu Windows (przy użyciu PuTTY):

  1. Otwórz PuTTY .
  2. Naciśnij Windows + R , wpisz regedit i naciśnij Enter.
  3. Przejdź do ścieżki rejestru:
     HKEY_CURRENT_USER\Software\Myusername\PuTTY\SshHostKeys
  4. Znajdź wpis powiązany z nazwą hosta lub adresem IP serwera zdalnego.
  5. Kliknij wpis prawym przyciskiem myszy i wybierz opcję Usuń .
  6. Połącz się ponownie z serwerem w PuTTY, a pojawi się monit o zaakceptowanie nowego klucza.

Dla systemu Windows (przy użyciu Git Bash):

  1. Otwórz Git Basha .
  2. Uruchom następujące polecenie:
     ssh-keygen -R <hostname>
  3. Przy następnym połączeniu SSH poprosi Cię o zaakceptowanie nowego klucza.

Rozwiązanie 2: Wyczyść cały plik known_hosts (Windows, Mac, Ubuntu)

Dla komputerów Mac i Ubuntu (Linux):

  1. Otwórz terminal.
  2. Uruchom następujące polecenie, aby usunąć cały plik known_hosts :
     rm ~/.ssh/known_hosts
  3. Połącz się ponownie ze zdalnym serwerem za pomocą protokołu SSH:
     ssh <username>@<hostname>

Dla systemu Windows (przy użyciu PuTTY):

  1. Otwórz PuTTY .
  2. Naciśnij Windows + R , wpisz regedit i naciśnij Enter, aby otworzyć Edytor rejestru .
  3. Przejdź do:
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  4. Kliknij prawym przyciskiem myszy folder SshHostKeys i wybierz opcję Usuń . Spowoduje to usunięcie wszystkich przechowywanych kluczy hosta.
  5. Połącz się ponownie z serwerem za pomocą PuTTY, a zostaniesz poproszony o zaakceptowanie nowego klucza hosta.

Dla systemu Windows (przy użyciu Git Bash):

  1. Otwórz Git Basha .
  2. Usuń plik known_hosts , uruchamiając:
     rm ~/.ssh/known_hosts
  3. Kiedy ponownie połączysz się z serwerem za pomocą protokołu SSH, zostaniesz poproszony o zaakceptowanie nowego klucza hosta.

Rozwiązanie 3: Tymczasowo zignoruj ​​sprawdzanie klucza hosta (Windows, Mac, Ubuntu)

Jeśli chcesz szybko połączyć się z serwerem i nie masz czasu na ręczne usuwanie starych kluczy hosta, możesz tymczasowo ominąć weryfikację klucza hosta. Chociaż ta metoda działa w mgnieniu oka, nie jest zalecana do regularnego stosowania , ponieważ może narazić Cię na potencjalne zagrożenia bezpieczeństwa.

Dla komputerów Mac i Ubuntu (Linux):

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Dla systemu Windows (przy użyciu Git Bash):

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Dla systemu Windows (przy użyciu PuTTY):

  1. Otwórz PuTTY .
  2. Przejdź do opcji Połączenie > SSH > Klucze hosta .
  3. Wyłącz sprawdzanie klucza hosta, wybierając opcję Zawsze akceptuj .
  4. Połącz się ponownie z serwerem bez sprawdzania klucza hosta.

Rozwiązanie 4: Dodaj ręcznie nowy klucz hosta (Windows, Mac, Ubuntu)

Dla komputerów Mac i Ubuntu (Linux):

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Dla systemu Windows (przy użyciu Git Bash):

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Dla systemu Windows (przy użyciu PuTTY):

Niestety PuTTY nie ma bezpośredniego odpowiednika dla ssh-keyscan . Aby ręcznie dodać klucz hosta, musisz połączyć się z serwerem i pozwolić PuTTY na wyświetlenie monitu o nowy klucz hosta.

Rozwiązanie 5: Sprawdź zmiany DNS lub adresu IP (Windows, Mac, Ubuntu)

Dla komputerów Mac i Ubuntu (Linux):

 nslookup <hostname>
 dig <hostname>

Dla systemu Windows (przy użyciu Git Bash):

 nslookup <hostname>
 dig <hostname>

Dla systemu Windows (przy użyciu PuTTY):

  1. Otwórz wiersz poleceń lub PowerShell .
  2. Użyj następującego polecenia, aby sprawdzić adres DNS lub IP:
     nslookup <hostname>
  3. Porównaj adres IP na wyjściu z tym, co PuTTY pokazuje w rejestrze.
  4. Jeśli adres IP się zmienił, usuń stary klucz hosta z rejestru PuTTY, przechodząc do:
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  5. Połącz się ponownie za pomocą PuTTY, a pojawi się monit o zaakceptowanie nowego klucza.

Najlepsze praktyki pozwalające uniknąć tego problemu w przyszłości (Windows, Mac, Ubuntu)

  • Użyj statycznych adresów IP: Skonfiguruj swoje serwery ze statycznymi adresami IP, aby zapobiec nieoczekiwanym zmianom, które mogą wywołać ostrzeżenie.
  • Regularnie czyść lub aktualizuj known_hosts : okresowo przeglądaj i czyść stare lub przestarzałe klucze hosta.
  • Rozważ użycie certyfikatów SSH: Użyj certyfikatów SSH do skalowalnego zarządzania kluczami hosta, zmniejszając ryzyko pojawienia się tego ostrzeżenia.
  • Monitoruj zmiany DNS lub IP: Śledź zmiany w rekordach DNS lub adresach IP i odpowiednio aktualizuj known_hosts .

Wniosek

Komunikat „Zmieniła się identyfikacja hosta zdalnego!” ostrzeżenie to istotna funkcja bezpieczeństwa w SSH, która zapobiega nieautoryzowanemu dostępowi poprzez weryfikację tożsamości zdalnych serwerów. Choć może to być niepokojące, ważne jest, aby przed przystąpieniem do jakichkolwiek zmian podjąć niezbędne kroki w celu zweryfikowania tożsamości serwera.

Korzystając z rozwiązań opisanych w tym artykule, możesz bezpiecznie usunąć ostrzeżenie, niezależnie od tego, czy korzystasz z systemu Windows , Mac czy Ubuntu . Zawsze pamiętaj, aby najpierw sprawdzić autentyczność serwera, a następnie wybrać rozwiązanie, które najlepiej pasuje do Twojej sytuacji, niezależnie od tego, czy będzie to usunięcie starego klucza hosta, wyczyszczenie pliku known_hosts , czy tymczasowe pominięcie sprawdzania.

Ponadto przestrzeganie najlepszych praktyk, takich jak używanie statycznych adresów IP, regularne aktualizowanie known_hosts i uwzględnianie certyfikatów SSH może pomóc zminimalizować występowanie tego problemu w przyszłości.