Uwierzytelnianie klucza publicznego SSH na Linux

Uwierzytelnianie klucza publicznego SSH na Linux

Ten samouczek wyjaśnia, jak korzystać z uwierzytelniania klucza publicznego SSH zamiast najczęściej używanej metody logowania hasła.

Po przeczytaniu tego samouczka dowiesz się, jak skonfigurować dostęp do SSH za pomocą uwierzytelniania kluczowego. Po praktycznych instrukcjach można znaleźć informacje na temat kluczowego procesu uwierzytelniania, zalet i wad w stosunku do uwierzytelniania hasła.

Konfigurowanie uwierzytelniania klucza SSH w Linux

Na początek musisz generować klucze publiczne i prywatne. Klucze prywatne i publiczne są generowane jednocześnie przez to samo urządzenie, a następnie udostępniane urządzeniom, które chcesz umożliwić połączenia.

W tym przykładzie wygenerujemy klucze uwierzytelniania od klienta za pomocą polecenia SSH-KeyGen, a następnie wyślemy klucz publiczny do serwera, aby umożliwić połączenia między nimi.

Aby wygenerować klucze, musisz się zalogować, ponieważ użytkownik może się połączyć. W tym samouczku użytkownik utworzony zarówno na serwerze, jak i kliencie jest Linuxhint.

Po wykonaniu polecenia SSH-KeyGen proces zapyta Cię, w którym pliku chcesz zapisać klawisz, naciśnij Enter, aby opuścić domyślną lokalizację (~//.ssh/id_rsa).

Zostaniesz również poproszony o hasło do zaszyfrowania klucza. Jest to zalecane, ale większość kluczowych uwierzytelnionych urządzeń go nie używa. Możesz wpisać paszę i nacisnąć Enter, lub po prostu naciśnij Enter, pozostawiając pole puste, aby uniknąć szyfrowania klawisza.

Aby wygenerować zarówno klucze publiczne, jak i prywatne, uruchom poniższe polecenie.

Notatka: W poniższym przykładzie widać w moim przypadku już miałem kluczowe uwierzytelnianie, a proces pyta mnie, czy chcę zastąpić poprzedni klucz. Jeśli nie miałeś poprzedniego klucza, możesz go zignorować.

$ ssh-keygen

Jak to możliwe, zobacz, że klucze zostały poprawnie wygenerowane.

Jak wyjaśniono wcześniej, po wygenerowaniu kluczy od klienta, musisz wysłać klucz publiczny na serwer, z którym chcesz się połączyć. Aby udostępnić klucz publiczny z serwerem, możesz użyć polecenia SSH-Copy-ID, a następnie nazwy użytkownika, którą chcesz podłączyć, oraz adres IP serwera, jak pokazano poniżej.

$ [email protected]

Klucz został poprawnie zainstalowany na serwerze. Teraz możesz połączyć się za pomocą SSH, a następnie nazwy użytkownika i adresu IP serwera, jak pokazano poniżej.

$ ssh [email protected]

W moim przypadku wpisałem hasło podczas generowania klawiszy. Tak więc, próbując uzyskać dostęp do klucza, jestem proszony o wpisanie hasła. Jeśli wpisałeś również hasło podczas generowania klawiszy, wypełnij pole i naciśnij odblokowanie, aby się podłączyć.

Jak widać na poniższym zrzucie ekranu, połączenie zostało pomyślnie ustanowione.

Wyłączanie uwierzytelniania hasła

Teraz włączyłeś uwierzytelnianie klucza publicznego SSH w Linux, powinieneś wyłączyć metodę uwierzytelniania hasła. Aby to osiągnąć, musisz edytować plik konfiguracyjny SSH/etc/ssh/sshd_config.

Możesz użyć następującego polecenia do edycji/etc/ssh/sshd_config za pomocą edytora tekstu nano.

$ sudo nano/etc/ssh/sshd_config

Znajdź linię zawierającą hasło Automatyka tak pokazana na zrzucie ekranu poniżej.

Edytuj linię,

HasłoAuthentication Tak

Zmień to na:

Hasło Automatyka nr

Zapisz i wyjdź z pliku. Jeśli użyłeś Nano do edytowania pliku, możesz nacisnąć Ctrl+X, aby wyjść z zapisywania zmian.

Aby zastosować zmiany, musisz ponownie uruchomić usługę SSH. Aby to zrobić, uruchom polecenie poniżej.

$ sudo systemctl restart ssh

Twoje logowanie hasła jest wyłączone i możesz podłączyć za pomocą uwierzytelniania klucza.

Wyłączanie logowania korzeniowego

Wyłączenie logowania korzeni to również świetny sposób na zwiększenie bezpieczeństwa systemu. Użytkownik główny jest uniwersalny i podatny na ataki brutalnej siły. W ten sposób możesz uniemożliwić każdemu brutalne wymuszanie korzenia lub zdalnie zalogować się z uprawnieniami.

Możesz wyłączyć logowanie root, edytując ten sam plik/etc/ssh/sshd_config, jak pokazano poniżej.

$ nano/etc/ssh/sshd_config

Znajdź linię zawierającą Pertrootlogin Tak pokazane poniżej.

Edytuj następujący wiersz:

Pertrootlogin Tak

Zmień to na:

Pertrootlogin nr

Wyjście oszczędzanie zmian poprzez naciśnięcie Ctrl+x.

Uruchom ponownie usługę SSH:

$ sudo systemctl restart ssh

Twój login root jest wyłączony.

Hasło vs Metody uwierzytelniania klucza

Jak widać, kluczowy proces uwierzytelniania jest łatwy do wdrożenia. Po zalogowaniu się do serwera, z którym chcesz się połączyć, klucz prywatny pozostaje bezpieczny w systemie i nie jest wysyłany do serwera. Zamiast tego serwer wysyła swój klucz publiczny do klienta, w którym ma miejsce uwierzytelnianie.

Istnieją powody, dla których niektórzy użytkownicy wybierają kluczowe uwierzytelnianie, a inni do logowania hasła.

Niektórzy użytkownicy wybiorą metodę uwierzytelniania klucza, ponieważ automatycznie generuje klucze, które są silniejsze niż hasła wytwarzane przez człowieka. Dodatkowo klucze prywatne nie są dostarczane do serwera. Nie są podatne na ataki man-in-thetle. Podczas korzystania z uwierzytelniania klucza mogą się łączyć tylko urządzenia z kluczem prywatnym, zwiększając bezpieczeństwo.

Z drugiej strony niektórzy użytkownicy wybiorą logowanie hasła, ponieważ mogą łączyć się z dowolnego urządzenia. Poświadczenia hasła są również łatwiejsze do rozpowszechnienia, jeśli masz wielu użytkowników do administracji.

Wniosek

Jak widać, zwiększenie bezpieczeństwa systemu poprzez zastąpienie logowania hasła na uwierzytelnianie klucza jest bardzo łatwym procesem, w tym kilka poleceń do wygenerowania klucza i udostępnienia. Ponadto wyłączenie uwierzytelniania hasła wymaga jedynie zastąpienia tak. Inne metody zwiększania bezpieczeństwa SSH można nauczyć się w Disable Root SSH i Linux dwuskładnikowe samouczki uwierzytelniania.

Mam nadzieję, że ten samouczek wyjaśniający, jak korzystać z uwierzytelniania klucza publicznego SSH w Linux, był przydatny.