W trakcie korzystania z SSH w Ubuntu Desktop możesz napotkać błąd w stylu: „Host key for [nazwa_hosta] has changed and you have requested strict checking. Host key verification failed.” Ten problem zwykle wynika ze zmiany klucza hosta na serwerze, z którym się łączysz. W tym artykule wyjaśnimy, jak usunąć problematyczny klucz hosta z pliku known_hosts oraz jak wyczyścić wszystkie zapisane klucze SSH w systemie.
1. Usuwanie pojedynczego klucza hosta
Jeśli problem dotyczy konkretnego hosta, na przykład docker-test-srvr, możesz usunąć jego klucz z pliku known_hosts. Wykonaj poniższe kroki:
- Otwórz terminal (skrót: Ctrl + Alt + T).
- Wpisz polecenie:
ssh-keygen -f "/home/[twoja_nazwa_uzytkownika]/.ssh/known_hosts" -R "docker-test-srvr"
Zastąp[twoja_nazwa_uzytkownika]nazwą swojego użytkownika, np.tomasz-syn-grzegorza. - Po wykonaniu polecenia klucz dla
docker-test-srvrzostanie usunięty. - Połącz się ponownie z serwerem za pomocą:
ssh [twoja_nazwa_uzytkownika]@docker-test-srvr
Zostaniesz poproszony o zaakceptowanie nowego klucza hosta. Wpiszyes, aby go zapisać.
Uwaga: Jeśli klucz jest zapisany pod adresem IP (np. 192.168.1.100) zamiast nazwy hosta, użyj adresu IP w poleceniu ssh-keygen -R.
2. Usuwanie wszystkich kluczy hostów
Jeśli chcesz wyczyścić wszystkie zapisane klucze hostów w pliku known_hosts, możesz usunąć lub wyczyścić ten plik. Oto jak to zrobić:
- Usunięcie pliku: Wykonaj w terminalu:
rm /home/[twoja_nazwa_uzytkownika]/.ssh/known_hosts
Przy kolejnym połączeniu SSH plik zostanie automatycznie utworzony od nowa. - Wyczyszczenie pliku bez usuwania: Wykonaj:
> /home/[twoja_nazwa_uzytkownika]/.ssh/known_hosts
Spowoduje to opróżnienie pliku, ale pozostawi go w systemie.
Uwaga: Usunięcie wszystkich kluczy oznacza, że przy każdym nowym połączeniu SSH zostaniesz poproszony o potwierdzenie klucza hosta. Upewnij się, że łączysz się z zaufanymi serwerami, aby uniknąć zagrożeń typu „man-in-the-middle”.
3. Rozwiązywanie problemów
Jeśli po usunięciu klucza problem nadal występuje, spróbuj następujących kroków:
- Sprawdź nazwę hosta: Otwórz plik
known_hostsza pomocą:cat /home/[twoja_nazwa_uzytkownika]/.ssh/known_hosts
Sprawdź, czy klucz jest zapisany pod nazwą hosta, adresem IP lub z niestandardowym portem (np.[docker-test-srvr]:2222). Usuń odpowiedni wpis. - Uprawnienia pliku: Upewnij się, że plik
known_hostsma odpowiednie uprawnienia:chmod 600 /home/[twoja_nazwa_uzytkownika]/.ssh/known_hosts
chown [twoja_nazwa_uzytkownika] /home/[twoja_nazwa_uzytkownika]/.ssh/known_hosts
- Tymczasowe wyłączenie ścisłej weryfikacji: Jeśli błąd się powtarza, możesz tymczasowo wyłączyć ścisłą weryfikację klucza:
ssh -o StrictHostKeyChecking=no [twoja_nazwa_uzytkownika]@docker-test-srvr
Używaj tej opcji ostrożnie, tylko dla zaufanych serwerów. - Debugowanie SSH: Aby uzyskać więcej informacji o problemie, uruchom SSH w trybie debugowania:
ssh -v [twoja_nazwa_uzytkownika]@docker-test-srvr
Logi pokażą, który klucz powoduje problem.
Podsumowanie
Usunięcie klucza hosta w Ubuntu Desktop jest proste i wymaga użycia polecenia ssh-keygen -R. Jeśli chcesz wyczyścić wszystkie klucze, możesz usunąć lub opróżnić plik known_hosts. Pamiętaj o zachowaniu ostrożności podczas potwierdzania nowych kluczy hostów, aby zapewnić bezpieczeństwo połączeń SSH.
Autor: Grok, xAI