Klucze SSH stanowią bezpieczną metodę weryfikacji tożsamości podczas łączenia się z serwerem, eliminując konieczność używania haseł. To rozwiązanie jest szczególnie korzystne dla administratorów, którzy często uzyskują dostęp do wielu serwerów. Niniejszy poradnik szczegółowo opisuje proces konfiguracji kluczy SSH na serwerze z systemem CentOS.
Wprowadzenie do SSH
Protokół SSH (Secure Shell) zapewnia bezpieczną komunikację pomiędzy komputerami w sieci. Jest powszechnie wykorzystywany do zdalnego zarządzania serwerami, transferu plików oraz wykonywania poleceń. Tradycyjnie SSH opiera się na uwierzytelnianiu za pomocą hasła, jednak klucze SSH oferują znacznie bezpieczniejsze podejście.
Działanie kluczy SSH opiera się na kryptografii asymetrycznej, która tworzy parę kluczy: publiczny i prywatny. Klucz publiczny jest udostępniany serwerowi, a klucz prywatny pozostaje na komputerze użytkownika. Podczas próby połączenia serwer weryfikuje klucz publiczny klienta, aby potwierdzić jego tożsamość.
Proces konfiguracji kluczy SSH
Generowanie pary kluczy
Pierwszym krokiem jest utworzenie pary kluczy SSH. W tym celu otwórz terminal i wprowadź poniższe polecenie:
ssh-keygen -t ed25519
System zapyta o nazwę pliku, w którym mają być zapisane klucze. Domyślną propozycją jest id_ed25519
. Możesz zatwierdzić tę nazwę lub wprowadzić własną.
Następnie zostaniesz poproszony o podanie hasła do klucza prywatnego. Hasło to nie jest wymagane, jednak zaleca się jego ustawienie dla zwiększenia bezpieczeństwa.
Przesłanie klucza publicznego na serwer
Po utworzeniu kluczy, należy przesłać klucz publiczny na serwer. W terminalu wykonaj polecenie:
ssh-copy-id uzytkownik@serwer
Zastąp uzytkownik
nazwą użytkownika na serwerze, a serwer
adresem IP lub nazwą domeny serwera.
System poprosi o hasło użytkownika na serwerze. Po pomyślnym przesłaniu klucza publicznego wyświetli się komunikat potwierdzający.
Ustawienia serwera SSH
Serwer SSH w systemie CentOS domyślnie jest skonfigurowany do uwierzytelniania hasłem. Aby umożliwić logowanie przy użyciu kluczy SSH, należy dokonać modyfikacji w pliku konfiguracyjnym. Otwórz plik /etc/ssh/sshd_config
za pomocą wybranego edytora tekstu.
Odszukaj linię:
PasswordAuthentication yes
I zamień ją na:
PasswordAuthentication no
Następnie znajdź linię:
PubkeyAuthentication no
I zamień ją na:
PubkeyAuthentication yes
Zapisz wprowadzone zmiany i zrestartuj usługę SSH poleceniem:
systemctl restart sshd
Weryfikacja połączenia przy użyciu kluczy SSH
Po skonfigurowaniu serwera SSH możesz przetestować połączenie za pomocą kluczy. W terminalu wpisz:
ssh uzytkownik@serwer
Ponownie, uzytkownik
zastąp nazwą użytkownika na serwerze, a serwer
adresem IP lub nazwą domeny serwera.
Jeżeli wszystko przebiegło prawidłowo, system nie powinien wymagać podania hasła. Powinieneś ujrzeć wiersz poleceń serwera.
Konfiguracja agenta SSH
Agent SSH to proces, który przechowuje klucze SSH, umożliwiając automatyczne uwierzytelnianie bez konieczności każdorazowego wpisywania hasła klucza prywatnego. Aby aktywować agenta, dodaj poniższą linię do pliku ~/.bashrc
:
eval "$(ssh-agent -s)"
Uruchom ponownie terminal lub w bieżącym terminalu wprowadź komendę source ~/.bashrc
, aby załadować zmiany.
Aby dodać klucz SSH do agenta, wykonaj polecenie:
ssh-add ~/.ssh/id_ed25519
System poprosi o podanie hasła klucza prywatnego. Po dodaniu klucza do agenta, hasło nie będzie wymagane podczas logowania na serwery akceptujące dany klucz publiczny.
Ustawienia wielu kluczy SSH
Możesz wygenerować wiele par kluczy SSH i wykorzystywać różne klucze do łączenia się z różnymi serwerami. Aby skonfigurować wiele kluczy SSH, wykonaj te kroki:
- Wygeneruj nowy klucz poleceniem:
ssh-keygen -t ed25519 -f ~/.ssh/klucz_specjalny
. - Prześlij klucz publiczny na serwer za pomocą:
ssh-copy-id -i ~/.ssh/klucz_specjalny uzytkownik@serwer
. - Dodaj klucz prywatny do agenta SSH:
ssh-add ~/.ssh/klucz_specjalny
.
Po ustawieniu wielu kluczy możesz skorzystać z opcji -i
w poleceniu ssh
, aby wybrać konkretny klucz prywatny.
Podsumowanie
Konfiguracja kluczy SSH to efektywny sposób na podniesienie poziomu bezpieczeństwa serwera i usprawnienie zarządzania nim. Zapewniają one bezpieczne uwierzytelnianie bez konieczności stosowania haseł, co czyni je preferowanym rozwiązaniem dla administratorów.
Najczęściej zadawane pytania
1. Dlaczego warto używać kluczy SSH?
Klucze SSH są bezpieczniejsze niż tradycyjne uwierzytelnianie hasłem ze względu na wykorzystanie kryptografii asymetrycznej. Dodatkowo eliminują konieczność wpisywania hasła przy każdym połączeniu z serwerem, co jest wygodne.
2. Czy kluczy SSH można używać do łączenia się z serwerami Windows?
Tak, kluczy SSH można używać do połączenia z serwerami Windows, wykorzystując narzędzia takie jak PuTTY lub WinSCP.
3. Jak zresetować hasło do klucza prywatnego?
Hasła do klucza prywatnego nie można zresetować. W przypadku jego zapomnienia konieczne jest wygenerowanie nowej pary kluczy.
4. Co to jest agent SSH?
Agent SSH to proces, który bezpiecznie przechowuje klucze SSH, pozwalając na automatyczne logowanie bez potrzeby ciągłego podawania hasła do klucza.
5. Czy klucze SSH mogą być wykorzystywane do logowania do innych aplikacji?
Tak, niektóre aplikacje, takie jak Git czy Docker, wspierają uwierzytelnianie przy użyciu kluczy SSH.
6. Jak wygenerować klucz SSH bez hasła?
Klucz SSH bez hasła można wygenerować przy użyciu opcji -N ""
w poleceniu ssh-keygen
. Mimo to, zaleca się ustawienie hasła dla zwiększenia bezpieczeństwa.
7. Czy można skonfigurować uwierzytelnianie dwuskładnikowe dla kluczy SSH?
Tak, istnieje możliwość konfiguracji uwierzytelniania dwuskładnikowego przy użyciu kluczy SSH, z wykorzystaniem aplikacji uwierzytelniającej lub klucza sprzętowego.
8. Jak zablokować klucze SSH w przypadku ich utraty lub kradzieży?
Klucze SSH można zablokować, zmieniając hasło lub usuwając plik klucza prywatnego. W przypadku korzystania z zewnętrznej usługi zarządzania kluczami, należy skontaktować się z jej dostawcą.
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.