SSH w administracji systemem
Poznasz podstawy bezpiecznego logowania do serwera przez SSH, rolę kluczy oraz pliku known_hosts, bez wchodzenia w zaawansowaną konfigurację produkcyjną.
Wróć do listy lekcji1. Krótka teoria
SSH to podstawowy sposób zdalnej pracy z serwerem Linux. Pozwala otworzyć zaszyfrowaną sesję terminala, uruchamiać polecenia i administrować systemem bez fizycznego dostępu do maszyny. Typowe połączenie ma postać ssh użytkownik@adres. Domyślnie SSH używa portu 22, ale sam port nie jest mechanizmem bezpieczeństwa. Logowanie może korzystać z hasła albo z pary kluczy. Klucz prywatny zostaje na komputerze administratora i powinien być chroniony, a klucz publiczny trafia na serwer do pliku ~/.ssh/authorized_keys. Do utworzenia pary służy ssh-keygen, a do wygodnego skopiowania klucza publicznego na serwer często używa się ssh-copy-id. Przy pierwszym połączeniu klient SSH pyta o potwierdzenie odcisku klucza hosta. Po akceptacji zapisuje go w ~/.ssh/known_hosts. Ten plik pomaga wykryć sytuację, w której pod znanym adresem odpowiada inny serwer. W praktyce należy rozumieć różnicę między kluczem użytkownika, który uwierzytelnia administratora, a kluczem hosta, który identyfikuje serwer.
2. Przykłady komend
ssh user@example.com
Łączy się z serwerem jako wskazany użytkownik.
$ ssh user@example.com
ssh -p 2222 user@example.com
Łączy się z serwerem SSH na niestandardowym porcie.
$ ssh -p 2222 user@example.com
ssh-keygen -t ed25519 -C "admin@example.com"
Tworzy parę kluczy SSH typu ed25519 z komentarzem.
$ ssh-keygen -t ed25519 -C "admin@example.com"
ssh-copy-id user@example.com
Kopiuje klucz publiczny użytkownika na serwer.
$ ssh-copy-id user@example.com
ssh-keygen -l -f ~/.ssh/id_ed25519.pub
Pokazuje odcisk klucza publicznego użytkownika.
$ ssh-keygen -l -f ~/.ssh/id_ed25519.pub
ssh-keygen -F example.com
Sprawdza wpis hosta w pliku known_hosts.
$ ssh-keygen -F example.com
3. Zadanie praktyczne
~/.ssh i pliki kluczy. Jeśli nie masz pary testowej, utwórz ją poleceniem ssh-keygen -t ed25519 -C "lab@example.com", nie nadpisując ważnych kluczy. Wyświetl odcisk klucza publicznego przez ssh-keygen -l -f ~/.ssh/id_ed25519.pub. Jeśli masz testowy serwer, połącz się przez ssh user@example.com i sprawdź, czy host pojawił się w known_hosts przez ssh-keygen -F example.com.
4. Typowe błędy
- Mylenie klucza prywatnego z publicznym i kopiowanie prywatnego na serwer.
- Nadpisywanie istniejących kluczy bez sprawdzenia, do czego są używane.
- Ignorowanie ostrzeżenia o zmianie klucza hosta.
- Zakładanie, że zmiana portu SSH sama w sobie zabezpiecza serwer.
- Używanie konta root do codziennej pracy zamiast zwykłego użytkownika z sudo.
- Brak hasła do klucza prywatnego na komputerze administratora.
5. Podsumowanie
SSH umożliwia zdalną, szyfrowaną pracę z serwerem. Klucz publiczny może trafić na serwer, ale klucz prywatny zostaje u administratora. ssh-keygen tworzy klucze, ssh-copy-id kopiuje klucz publiczny, a known_hosts pomaga rozpoznać znany serwer.