Protokół SSH (Secure Shell) to fundament bezpiecznej komunikacji, umożliwiający zdalne logowanie i wydawanie poleceń na systemach Linux oraz UNIX. Zamiast tradycyjnego uwierzytelniania hasłem, które jest bardziej podatne na ataki, zaleca się wdrożenie kluczy SSH, zapewniających znacznie wyższy poziom bezpieczeństwa. Klucze SSH opierają się na kryptografii asymetrycznej, składającej się z pary kluczy: prywatnego, przechowywanego na Twoim komputerze, oraz publicznego, który instalujesz na serwerze.
Tworzenie pary kluczy SSH
Aby wygenerować unikatową parę kluczy, otwórz terminal i wprowadź poniższe polecenie:
ssh-keygen -t rsa -b 4096
-
-t rsa
definiuje rodzaj klucza, gdzie RSA jest preferowanym wyborem ze względu na swoją solidność. -
-b 4096
ustala długość klucza, z 4096 bitami uznawanymi za wystarczająco bezpieczne w większości przypadków.
W trakcie generowania kluczy system poprosi Cię o wskazanie ścieżki zapisu plików kluczy. Standardowo, są one przechowywane w następujących lokalizacjach:
-
Klucz prywatny:
~/.ssh/id_rsa
-
Klucz publiczny:
~/.ssh/id_rsa.pub
Możesz dowolnie zmienić domyślne położenie. System poprosi również o ustawienie hasła dla klucza prywatnego, co jest bardzo zalecane, ponieważ chroni go w sytuacji, gdy dostanie się w niepowołane ręce.
Przenoszenie klucza publicznego na serwer
Po wygenerowaniu kluczy, musisz przekopiować klucz publiczny na serwer, z którym planujesz się łączyć. Wykorzystaj w tym celu poniższe polecenie:
ssh-copy-id username@remote_host
username
reprezentuje nazwę użytkownika na serwerze zdalnym.remote_host
to adres IP lub nazwa domenowa serwera docelowego.
Wymagane będzie podanie hasła do konta użytkownika na serwerze. Po pomyślnym przekopiowaniu klucza publicznego, logowanie do serwera nie będzie już wymagało podawania hasła. Użyj w tym celu prostego polecenia:
ssh username@remote_host
Dostosowanie konfiguracji serwera SSH
Domyślnie, serwer SSH w Rocky Linux 9 akceptuje uwierzytelnianie zarówno przy pomocy haseł, jak i kluczy SSH. Możesz skonfigurować ustawienia uwierzytelniania poprzez edycję pliku konfiguracyjnego:
sudo vim /etc/ssh/sshd_config
W pliku tym odnajdź następujące linie:
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
Zmień wartość PasswordAuthentication
na no
, aby wyłączyć logowanie za pomocą haseł, a ChallengeResponseAuthentication
na yes
, aby aktywować uwierzytelnianie oparte na wyzwaniu-odpowiedzi. Zapisz zmiany i zamknij plik.
Aby zmiany zaczęły obowiązywać, zrestartuj usługę SSH:
sudo systemctl restart sshd
Wykorzystanie agenta kluczy SSH
Agent kluczy SSH to program, który bezpiecznie przechowuje klucze w pamięci i automatycznie je odblokowuje, eliminując konieczność wpisywania hasła do klucza prywatnego przy każdym połączeniu.
Jak aktywować i korzystać z agenta kluczy SSH?
Aby zacząć korzystać z agenta, użyj poniższego polecenia:
ssh-agent bash
Następnie dodaj klucz SSH do agenta:
ssh-add ~/.ssh/id_rsa
Zostaniesz poproszony o podanie hasła do klucza prywatnego. Po pomyślnym dodaniu klucza, logowanie do serwera będzie już bezhasłowe:
ssh username@remote_host
Podsumowanie
Klucze SSH to znacznie bezpieczniejsza alternatywa dla uwierzytelniania hasłem, pozwalająca na zdalne logowanie i wykonywanie poleceń na serwerach Linux i UNIX z podwyższonym poziomem ochrony. Ich konfiguracja nie jest skomplikowana, a korzyści wynikające z ich użycia znacząco podnoszą bezpieczeństwo Twojej infrastruktury.
Najczęściej zadawane pytania (FAQ)
Czy jeden zestaw kluczy SSH może być używany na wielu serwerach? | Oczywiście, ta sama para kluczy SSH może być wykorzystana do łączenia się z wieloma serwerami. Musisz jedynie umieścić klucz publiczny na każdym z nich. |
Jak usunąć klucze z agenta SSH? | Użyj komendy ssh-add -D , aby wyczyścić agenta z zapisanych kluczy. |
W jaki sposób zmienić hasło klucza prywatnego SSH? | Do zmiany hasła klucza prywatnego użyj komendy ssh-keygen -p -f ~/.ssh/id_rsa . |
Co zrobić w przypadku utraty klucza prywatnego? | W takiej sytuacji musisz wygenerować nową parę kluczy i umieścić klucz publiczny na docelowym serwerze. |
Czy klucze SSH mogą być używane z innymi protokołami? | Tak, klucze SSH są kompatybilne z protokołami takimi jak SFTP (Secure File Transfer Protocol) oraz SCP (Secure Copy Protocol). |
Jak włączyć uwierzytelnianie wieloskładnikowe dla kluczy SSH? | Uwierzytelnianie wieloskładnikowe (MFA) można zaimplementować, korzystając z aplikacji takich jak Google Authenticator. |
Czy klucze SSH są całkowicie bezpieczne? | Choć klucze SSH oferują wysoki poziom bezpieczeństwa, nie są niezniszczalne. Mogą zostać złamane w przypadku ataku brute force lub próby odgadnięcia hasła do klucza. |
Czy przechowywanie kluczy SSH w chmurze jest bezpieczne? | Przechowywanie kluczy w chmurze może być wygodne, ale zwiększa ryzyko ich potencjalnej kradzieży. Zdecydowanie bardziej zalecane jest przechowywanie kluczy lokalnie, na zabezpieczonym komputerze. |
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.