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 4096Gdzie :
-toznaczatyp. Powyższe polecenie generuje parę kluczy typu RSA. RSA jest typem domyślnym.-boznaczabity. 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_rsaPowinieneś 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-ipWprowadź 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-ipTym 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.
exitI ponownie SSH do zdalnego serwera:
ssh remote-user@server-ipTym 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_configZnajdź tę linię:
#PasswordAuthentication yesZmień to na:
PasswordAuthentication noNastę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 noZapisz plik i uruchom ponownie usługę SSH.
sudo systemctl restart sshdTeraz, 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_configDodaj 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 sshdZmiana 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 -pWprowadź 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 🙂


