Jak włączyć logowanie SSH bez hasła w systemie Linux

Jak włączyć logowanie SSH bez hasła w systemie Linux

To doskonały pomysł, aby zalogować się do serwera SSH bez hasła. Poważnie, pozbądź się go. Nie ma potrzeby używania hasła w jednej z najczęściej atakowanych usług na serwerach Linux, prawda? Zabezpieczanie serwera SSH za pomocą standardowego uwierzytelniania opartego na haśle to zły pomysł. Atakujący mogą z łatwością łamać hasła siłowe, a kiedy są jedyną rzeczą stojącą między złym aktorem a twoim serwerem, zdecydowanie powinieneś się denerwować.

Dlatego uwierzytelnianie oparte na kluczu RSA jest znacznie lepsze. Możesz skonfigurować i zabezpieczyć swój serwer Linux, aby zezwalał na dostęp tylko z komputerów, które posiadają klucze RSA, które zostały już zaakceptowane. Każdy inny zostanie natychmiast odrzucony. Dodatkową korzyścią jest to, że możesz tworzyć te klucze z hasłem lub bez, co zależy wyłącznie od Ciebie. Jednak w większości przypadków silny klucz bez hasła jest w porządku.

Jeśli używasz urządzeń z systemem Linux również w domu, masz dodatkową korzyść w postaci wygody. Załóżmy, że chcesz skonfigurować przekazywanie SSH X-forward ze stacji roboczej z systemem Linux na laptopa. Czy naprawdę chcesz wprowadzać hasło za każdym razem, gdy uruchamiasz zdalny program? Skonfiguruj klucze SSH, a nie będziesz musiał.

Zainstaluj pakiety

Potrzebujesz kilku pakietów. Prawdopodobnie masz już niektóre z nich, ale warto to sprawdzić. Pakiety są takie same na serwerze i kliencie. Istnieje jednak duże prawdopodobieństwo, że oba komputery są dla siebie serwerami i klientami (sytuacja domowa), więc warto upewnić się, że te pakiety zostały zainstalowane.

Metapakiet OpenSSH nie jest domyślnie instalowany w systemach Debian ani Ubuntu. Jeśli nie masz go jeszcze zainstalowanego, możesz to zrobić, uruchamiając następujące polecenie:

sudo apt install ssh

Ssh Linux bez hasła 02 Instalowanie Openssh

Wygeneruj swój klucz SSH w systemie Linux

Wygenerowanie klucza SSH w systemie Linux jest naprawdę łatwe. Po prostu powiedz OpenSSH, że musisz wygenerować klucz. Dobrym pomysłem jest również określenie ilości bitów za pomocą -bflagi i typu za pomocą -t. Najlepszy jest klucz 4096-bitowy, ponieważ zapewnia silniejsze szyfrowanie.

ssh-keygen -t ed25519

Najpierw narzędzie zapyta, gdzie chcesz przechowywać klucz. Po prostu naciśnij Enterdla domyślnego katalogu. Gdy prosi o hasło, pozostaw to pole puste, aby uzyskać klucz bez hasła i uwierzytelnianie bez hasła. Jeśli chcesz użyć hasła do swojego klucza, wprowadź je tutaj.

Wygenerowanie klucza zajmie komputerowi kilka sekund. Kiedy to się skończy, wydrukuje reprezentację ASCII twojego klucza na terminalu.

Wysyłanie klucza do zdalnego hosta systemu Linux

Aby użyć klucza, musisz wysłać go na zdalny serwer. OpenSSH ma do tego również inne wbudowane narzędzie. Powiedz mu, gdzie jest twój klucz i z którym użytkownikiem na serwerze ma go powiązać.

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@ip_remote_host

Zamień ip_remote_hostna rzeczywisty adres IP zdalnego hosta, którym będziesz zarządzać przez SSH. Zamień usernamena rzeczywistą nazwę użytkownika na zdalnym hoście.

Ssh Linux bez hasła 04 Identyfikator kopiowania Ssh

Bardzo ważne jest, aby użyć -iopcji określenia pliku tożsamości zawierającego klucz publiczny. Jeśli spróbujesz użyć klucza SSH bez tej opcji, może pojawić się błąd.

Ssh Passwordless Linux 05 Udana kopia

Testowanie połączenia SSH w systemie Linux

Za pomocą klucza SSH na zdalnym serwerze możesz teraz sprawdzić, czy połączenie działa poprawnie.

Zaloguj się za pomocą następującego polecenia:

ssh username@ip_remote_host

Zdalny host zaloguje Cię bez pytania o hasło do konta użytkownika.

Ssh Linux bez hasła 06 Logowanie bez hasła

Jeśli jednak popełnisz błąd podczas procesu, demon SSH automatycznie powróci do uwierzytelniania hasłem dla twojego konta użytkownika. Dzięki temu możesz nadal uzyskiwać dostęp do zdalnego serwera, nawet jeśli masz niedziałający klucz RSA.

Ssh Linux bez hasła 07 Logowanie nie powiodło się

Konfigurowanie SSH do blokowania haseł

Aby zapewnić najlepsze bezpieczeństwo, musisz wyłączyć logowanie za pomocą hasła SSH na serwerze z systemem Linux. Podobnie jak w przypadku włączenia uwierzytelniania dwuskładnikowego w SSH, zapobiega to przedostawaniu się na serwer przez brutalne siły.

Ssh Passwordless Linux 08 Próbka dwuskładnikowa

Zanim to zrobisz, ważne jest, aby upewnić się, że możesz niezawodnie zalogować się za pomocą klucza SSH, ponieważ możliwe jest zablokowanie dostępu do zdalnego serwera, jeśli masz nieprawidłowo działający klucz.

Plik konfiguracyjny demona SSH można znaleźć w „/etc/ssh/sshd_config”. Otwórz plik na serwerze za pomocą sudo i preferowanego edytora tekstu. Na przykład otwórz ten plik za pomocą nano, uruchamiając następujące polecenie:

sudo nano /etc/ssh/sshd_config

Znajdź poniższe linie, naciskając Ctrl+ Wi edytuj je, aby wyglądały jak w przykładzie. Odkomentuj oba wpisy i zmień wartości na no.

PasswordAuthentication no
PermitEmptyPasswords no

Ssh Passwordless Linux 09 Znajdź opcję Nano

PasswordAuthenticationokreśla, czy używać uwierzytelniania hasłem. Ustawiliśmy to na „nie”, ponieważ chcemy używać tylko kluczy SSH.

PermitEmptyPasswordsokreśla, czy serwer zezwala na logowanie z pustym hasłem. Nigdy nie powinieneś na to pozwalać, więc ustawiliśmy to na „nie”.

Ssh Passwordless Linux 10 Zaktualizuj ustawienia Sshd

Następnie znajdź wiersz „UsePAM” i zmień go na „nie”. Zapobiegnie to używaniu przez demona metod uwierzytelniania (hasło, Kerberos itp.) innych niż klucze SSH.

UsePAM no

Ssh Passwordless Linux 11 Wyłącz obsługę Pam

Zapisz plik, naciskając Ctrl+ O, a następnie Ctrl+ Xi ponownie załaduj serwer SSH.

sudo systemctl restart ssh

Teraz, gdy pomyślnie skonfigurowałeś swój serwer, aby używał tylko kluczy SSH do uwierzytelniania, każdy, kto spróbuje zalogować się bez ważnego klucza RSA, zostanie natychmiast odrzucony.

Ssh Linux bez hasła 12 Brak logowania za pomocą klucza

Często Zadawane Pytania

Otrzymuję komunikat „Połączenie odrzucone”, gdy wysyłam klucz SSH do mojego serwera Linux. Jak to naprawić?

Upewnij się, że serwer SSH działa na zdalnym hoście. Możesz to sprawdzić, uruchamiając sudo systemctl status ssh. Jeśli usługa nie jest uruchomiona, możesz ją uruchomić za pomocą tego polecenia: sudo systemctl start ssh.

Jeśli na serwerze działa zapora sieciowa, upewnij się, że port 22 jest otwarty. Możesz to zrobić biegając sudo ufw status. Jeśli protokołu SSH nie ma na liście, możesz go włączyć, uruchamiając to polecenie: sudo ufw allow ssh.

Kiedy próbuję się zalogować, otrzymuję komunikat o błędzie „Odmowa uprawnień (publickey)”. Co powinienem zrobić?

Ten błąd oznacza, że ​​skonfigurowałeś serwer do używania kluczy do uwierzytelniania, ale nadal próbujesz zalogować się za pomocą hasła. Może to być spowodowane brakiem klucza RSA lub nieprawidłowym ustawieniem SSH. Sprawdź, czy poprawnie skopiowałeś swój klucz publiczny na serwer i czy podajesz prawidłowy klucz publiczny podczas łączenia.

Gdy próbuję się połączyć, otrzymuję komunikat o błędzie „Weryfikacja klucza hosta nie powiodła się”. Jak to naprawić?

Ten błąd oznacza, że ​​klucz hosta serwera SSH został zmieniony. Może się to zdarzyć, jeśli serwer został ponownie zainstalowany. Możesz ponownie wygenerować nowy klucz publiczny i skopiować go do zdalnego hosta. Powtórz kroki opisane w tym artykule, aby ponownie wygenerować i dodać nowy klucz do serwera.

Czy można używać wielu kluczy SSH na tym samym zdalnym serwerze Linux?

Tak. Możesz użyć -fopcji w OpenSSH, aby określić dokładny klucz, którego chcesz użyć do połączenia ze zdalnym serwerem. Na przykład bieganie ssh -f ~/.ssh/id_rsa_2 username@remote_ip_addresspołączy cię ze zdalnym serwerem za pomocą klucza „id_rsa_2” zamiast domyślnego „id_rsa”.

Należy jednak pamiętać, że to polecenie zadziała tylko wtedy, gdy twój zdalny serwer rozpozna już twój nowy klucz. Najpierw musisz skopiować go na zdalny serwer za pomocą ssh-copy-id. Podobnie jak w przypadku powyższych kroków, możesz to zrobić za pomocą uwierzytelnienia za pomocą hasła lub klucza RSA.

Za każdym razem, gdy próbuję skopiować mój klucz SSH na mój serwer, otrzymuję komunikat o błędzie „Odmowa uprawnień”.

Ten problem jest najprawdopodobniej spowodowany problemem z uprawnieniami na serwerze zdalnym. W większości przypadków ssh-copy-idnarzędzie powinno prawidłowo rozwiązać wszelkie problemy z dostępem, gdy tylko połączy się ze zdalnym serwerem. Istnieją jednak przypadki, w których ta funkcja się psuje i nie udaje się prawidłowo skopiować pliku „id_rsa” komputera lokalnego.

Aby to naprawić, zaloguj się na zdalny serwer i uruchom chmod 700 /home/$USER/.ssh/* && chmod 600 /home/$USER/.ssh. Spowoduje to ustawienie poprawnych bitów uprawnień zarówno dla folderu „.ssh”, jak i jego zawartości.

Źródło obrazu: Unsplash . Wszystkie przeróbki i zrzuty ekranu autorstwa Ramces Red.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *