Wyszukiwanie w witrynie

2 proste kroki, aby skonfigurować uwierzytelnianie klucza publicznego SSH w CentOS


W tym samouczku wyjaśniono, jak skonfigurować uwierzytelnianie kluczem publicznym SSH na komputerze stacjonarnym CentOS/RHEL. Istnieją zasadniczo dwa sposoby uwierzytelniania logowania użytkownika na serwerze OpenSSH: uwierzytelnianie hasłem i uwierzytelnianie kluczem publicznym. To drugie rozwiązanie jest również znane jako logowanie SSH bez hasła, ponieważ nie trzeba wpisywać hasła.

Krok 1: Wygeneruj parę kluczy publicznych/prywatnych SSH na komputerze stacjonarnym CentOS/RHEL

Na pulpicie CentOS/RHEL (nie na serwerze) wprowadź następujące polecenie w oknie terminala.

ssh-keygen -t rsa -b 4096

Gdzie :

  • -t oznacza typ. Powyższe polecenie generuje parę kluczy typu RSA. RSA jest typem domyślnym.
  • -b oznacza bity. Domyślnie klucz ma długość 3072 bitów. Dla większego bezpieczeństwa używamy klucza 4096-bitowego.

Gdy pojawi się pytanie, w którym pliku zapisać klucz, możesz po prostu nacisnąć Enter, aby użyć pliku domyślnego. Następnie wprowadź dobre hasło o długości co najmniej 20 znaków. Hasło służy do szyfrowania klucza prywatnego.

  • Klucz prywatny (nie udostępniaj go nikomu) zostanie zapisany w pliku .ssh/id_rsa w Twoim katalogu domowym.
  • Klucz publiczny zostanie zapisany w pliku .ssh/id_rsa.pub.

Z losowego obrazu możemy zobaczyć długość klucza (RSA 4096). Teraz uruchom następujące polecenie.

file ~/.ssh/id_rsa

Powinieneś zobaczyć następujące dane wyjściowe:

/home/username/.ssh/id_rsa: OpenSSH private key

Jeśli zobaczysz błąd „Brak takiego pliku lub katalogu”, oznacza to, że para kluczy SSH nie została utworzona. Uruchom komendę ssh-keygen -t rsa -b 4096, aby utworzyć go ponownie.

Krok 2: Prześlij swój klucz publiczny SSH na zdalny serwer Linux

Wskazówka: Na zdalnym serwerze można uruchomić dowolną dystrybucję Linuksa: Debian, Ubuntu, RHEL, CentOS, dowolną, o ile obsługuje serwer OpenSSH, możesz zastosować następującą metodę.

Można to łatwo zrobić za pomocą polecenia ssh-copy-id, które jest dostarczane z pakietem openssh-clients.

ssh-copy-id remote-user@server-ip

Wprowadź hasło użytkownika zdalnego.

Klucz publiczny będzie przechowywany w pliku .ssh/authorized_keys w katalogu domowym zdalnego użytkownika. Teraz SSH do zdalnego serwera.

ssh remote-user@server-ip

Tym razem musisz wprowadzić klucz RSA hasło, aby odblokować klucz prywatny. Możesz wybrać automatyczne odblokowanie klucza podczas logowania, dzięki czemu nie będziesz musiał w przyszłości wpisywać hasła.

Po wprowadzeniu prawidłowego hasła klucza zostaniesz zalogowany na zdalnym serwerze Linux. Teraz wyjdź ze zdalnego serwera.

exit

I ponownie SSH do zdalnego serwera:

ssh remote-user@server-ip

Tym razem zostaniesz automatycznie zalogowany na zdalnym serwerze, mimo że nie wpisałeś hasła ani hasła klucza. Nie musisz także wpisywać hasła ani hasła klucza, gdy używasz polecenia scp do przesyłania pliku. Polecenie scp jest dostarczane przez pakiet openssh-clients, który jest domyślnie instalowany na pulpicie CentOS/RHEL.

Wymuszaj uwierzytelnianie klucza publicznego SSH na serwerze zdalnym

Chociaż klucz SSH jest teraz domyślnie używany do logowania się na serwerze, nadal możesz używać hasła, aby logować się do serwera na innym komputerze. Nie chcesz, aby hakerzy przeprowadzali ataki brute-force na Twój serwer, dlatego dobrą praktyką jest wyłączenie uwierzytelniania hasłem na serwerze OpenSSH.

Aby wyłączyć uwierzytelnianie hasłem, edytuj plik /etc/ssh/sshd_config na serwerze zdalnym.

sudo nano /etc/ssh/sshd_config

Znajdź tę linię:

#PasswordAuthentication yes

Zmień to na:

PasswordAuthentication no

Następnie znajdź wiersz ChallengeResponseAuthentication. Upewnij się, że jego wartość jest ustawiona na no, jak poniżej. Jeśli jest ustawione na yes, nadal możesz używać hasła do logowania.

ChallengeResponseAuthentication no

Zapisz plik i uruchom ponownie usługę SSH.

sudo systemctl restart sshd

Teraz, jeśli nie masz odpowiedniego klucza prywatnego w katalogu ~/.ssh, podczas próby połączenia SSH ze zdalnym serwerem zobaczysz następujący błąd.

Permission denied (publickey).

Oznacza to, że zdalny serwer zezwala tylko na logowanie SSH przy użyciu kluczy ssh i nie pozwala na uwierzytelnianie hasłem. Pamiętaj, że jeśli ustawisz PasswordAuthentication na no i ChallengeResponseAuthentication na yes, to nadal mogę zalogować się przy użyciu hasła. Aby wyłączyć logowanie za pomocą hasła, oba muszą być ustawione na no.

Tworzenie kopii zapasowej pary kluczy publicznych/prywatnych

Po wyłączeniu uwierzytelniania hasłem SSH bardzo ważne jest utworzenie kopii zapasowej kluczy SSH. Jeśli zgubisz klucze, zostaniesz zablokowany na swoim serwerze. Utwórz kopię zapasową pary kluczy publicznych/prywatnych w bezpiecznym miejscu, takim jak dysk USB.

cp ~/.ssh/id_rsa* /path/to/safe/location/

Możesz skopiować parę kluczy na nowy komputer z systemem Linux i SSH na swój serwer za pomocą kluczy SSH. Po skopiowaniu pary kluczy na nowy komputer przenieś je do katalogu .ssh/ nowego użytkownika.

mv id_rsa* ~/.ssh/

Musisz zmienić właściciela pary kluczy na użytkownika na nowym komputerze.

sudo chown new-user:new-user ~/.ssh/id_rsa*

Teraz możesz używać kluczy SSH do logowania się do zdalnego serwera na nowym komputerze.

Możesz także przechowywać parę kluczy w folderze, a następnie skompresować folder za pomocą szyfrowania i wysłać go do magazynu w chmurze, takiego jak NextCloud.

Zezwalaj na uwierzytelnianie hasłem z zaufanych adresów IP

Możesz zezwolić na uwierzytelnianie hasłem z własnych adresów IP, więc jeśli klucz SSH zostanie zgubiony, nadal będziesz mógł zalogować się do swojego serwera przez SSH.

Wskazówka: jeśli nie masz statycznego adresu IP, możesz skonfigurować własny serwer VPN w centrum danych.

Otwórz plik konfiguracyjny demona SSH na serwerze zdalnym.

sudo nano /etc/ssh/sshd_config

Dodaj następujące wiersze na dole pliku. Zamień 10.0.0.2 na swój własny adres IP.

Match Address 10.0.0.2
   PasswordAuthentication yes

Jeśli klient łączy się z adresu 192.168.0.2, dozwolone jest uwierzytelnianie hasłem. Możesz dodać wiele adresów IP.

Match Address 10.0.0.2 10.0.0.3
   PasswordAuthentication yes

Lub użyj notacji CIDR w następujący sposób:

Match Address 10.0.0.0/24
   PasswordAuthentication yes

Zapisz i zamknij plik. Uruchom ponownie serwer OpenSSH.

sudo systemctl restart sshd

Zmiana hasła klucza prywatnego

Jeśli kiedykolwiek będziesz musiał zmienić hasło klucza prywatnego, możesz to zrobić za pomocą tego polecenia:

ssh-keygen -f ~/.ssh/id_rsa -p

Wprowadź swoje stare hasło, a następnie wprowadź nowe hasło.

Podsumowanie

Mam nadzieję, że ten samouczek pomógł Ci skonfigurować uwierzytelnianie kluczem publicznym SSH na komputerze stacjonarnym CentOS/RHEL. Możesz także przeczytać:

  • 3 sposoby używania protokołu SSH w systemie Windows do logowania się do serwera Linux

Jak zawsze, jeśli uznałeś ten post za przydatny, zapisz się do naszego bezpłatnego biuletynu, aby uzyskać więcej porad i wskazówek. Uważaj 🙂

Powiązane artykuły