Wszystkie ważne informacje, które musisz znać o pliku known_hosts w systemie Linux
Plik known_hosts to kluczowy element protokołu SSH, który znajdziesz w katalogu .ssh. Dowiedz się o nim więcej.
Plik known_hosts można znaleźć w folderze .ssh Twojego katalogu domowego, obok innych plików.
|
|
W tym przypadku Twoim prywatnym kluczem SSH jest id_ed25519. Publiczny klucz SSH to pub. W SSH profile są tworzone w pliku config, aby ułatwić łatwe połączenia z różnymi serwerami. Stworzyłem go specjalnie; to nie jest powszechny plik.
Ten artykuł skupia się na known_hosts, ostatnim pliku. Plik ~/.ssh/known_hosts to kluczowy element plików konfiguracyjnych SSH dla klientów.
Pozwól, że wyjaśnię to bardziej.
Co oznacza plik known hosts w SSH?
Plik known_hosts przechowuje publiczne klucze hostów, z którymi użytkownik się połączył. Jest to kluczowy plik, który zapisuje identyfikację użytkownika na Twoim lokalnym komputerze, zapewniając, że łączą się z prawdziwym serwerem. Ponadto pomaga w zapobieganiu atakom
man-in-the-middle
.
Za każdym razem, gdy nawiązujesz połączenie SSH z nowym zdalnym serwerem, zadawane jest pytanie, czy chcesz dodać zdalne hosty do pliku known_hosts.
|
|
W istocie, pytanie brzmi, czy chcesz dodać szczegóły zdalnego systemu do własnego.
Jeśli wybierzesz “tak”, Twój system zapisze tożsamość serwera.
Unikaj ataków man-in-the-middle
Załóżmy, że dodałeś serwer do pliku known_hosts i regularnie się z nim łączysz.
Twój system wykryje wszelkie zmiany publicznego klucza zdalnego serwera, jeśli wystąpią, ze względu na dane przechowywane w pliku known_hosts. Natychmiast otrzymasz powiadomienie o tej zmianie:
|
|
Zanim zaakceptujesz ten nowy klucz w takiej sytuacji, możesz skontaktować się z administratorem zdalnego serwera. W ten sposób możesz upewnić się, że host lub zdalny serwer nie został skompromitowany.
Klucz hosta lub serwera może być czasami celowo zmieniany przez administratora lub w wyniku ponownej instalacji serwera.
Bez względu na powód tej zmiany, aby ponownie połączyć się ze zdalnym serwerem, musisz najpierw usunąć poprzedni klucz z pliku known_hosts. Gdy ponownie połączysz się z tym serwerem, host klienta wygeneruje dla niego nowy klucz hosta.
Obsługa wielu autoryzowanych użytkowników
Jak wcześniej wskazano, publiczny klucz zdalnego serwera jest dołączany do pliku known_hosts hosta klienta po pomyślnym połączeniu.
Istnieją sytuacje, kiedy chcesz uwierzytelnić serwer dla wielu użytkowników jednocześnie, bez konieczności proszenia ich o weryfikację klucza serwera. Na przykład, jeśli używasz Ansible lub innego narzędzia do zarządzania konfiguracją, nie chcesz, aby host klienta prosił o weryfikację klucza serwera.
Dlatego istnieją trzy sposoby, aby obejść interaktywne monity SSH, jeśli masz wielu użytkowników:
- Ręczne dodanie publicznego klucza serwera do pliku known_hosts każdego użytkownika.
- Użycie opcji wiersza poleceń -o StrictHostKeyChecking=no przy każdym połączeniu z serwerem przez SSH (niezalecane)
- Utworzenie głównego lub podstawowego pliku ssh_known_hosts, zarejestrowanie tam wszystkich hostów, a następnie dystrybucja tego pliku do wszystkich hostów klienta. Dodatkowo można użyć polecenia ssh-keyscan, aby to zrealizować:
|
|
Opcja StrictHostKeyChecking=no może być użyta, jak pokazano na poniższym zrzucie ekranu:
|
|
|
|
W porównaniu z dwoma innymi metodami, pierwsza metoda zarządzania wieloma użytkownikami do uwierzytelniania serwera jest najbardziej pracochłonna.
Dostęp do pliku known_hosts w celu uzyskania informacji o zdalnym systemie
To zadanie jest wszystkim, tylko nie prostym i łatwym.
Prawie wszystkie systemy Linux mają ustawiony parametr HashKnownHosts pliku konfiguracyjnego SSH na wartość Yes. Jest to środek bezpieczeństwa.
Oznacza to, że informacje z pliku known_hosts są hashowane. Chociaż widzisz losowe liczby, nie jesteś w stanie ich zinterpretować.
|
|
Jeśli znasz nazwę hosta lub adres IP systemu, możesz uzyskać odpowiednie wpisy z pliku known_hosts.
|
|
Jednak nie jest możliwe, aby jedno polecenie mogło dostarczyć czytelną listę wszystkich serwerów i ich szczegółów.
Plik known_hosts można rozszyfrować przy użyciu specjalnie zaprojektowanych narzędzi i skryptów, ale to wykracza poza zakres zwykłego użytkownika, takiego jak Ty i ja.
Usuwanie części z pliku known_hosts
Jeśli znasz nazwę hosta lub adres IP zdalnego systemu, możesz usunąć konkretny wpis z pliku known_hosts.
|
|
Jest to znacznie bardziej efektywne niż ręczne usuwanie wpisów związanych z serwerem za pomocą polecenia rm, po ich znalezieniu.
Podsumowanie
Zrozumienie różnych plików konfiguracyjnych SSH daje ci większą wiedzę o bezpieczeństwie systemu. Jednym z kluczowych elementów tych plików jest “known_hosts.”