Klucze SSH w praktyce
Przećwiczysz tworzenie pary kluczy SSH, kopiowanie klucza publicznego na serwer, ustawianie uprawnień katalogu .ssh i diagnozowanie typowych problemów z logowaniem.
Wróć do listy lekcji1. Krótka teoria
Logowanie kluczami SSH opiera się na parze kluczy: prywatnym i publicznym. Klucz prywatny zostaje na komputerze użytkownika i powinien być chroniony jak sekret. Klucz publiczny można przekazać na serwer, najczęściej do pliku ~/.ssh/authorized_keys użytkownika, na którego konto chcemy się logować. Parę kluczy tworzy ssh-keygen. W nowych konfiguracjach dobrym wyborem jest typ ed25519, o ile systemy po obu stronach go obsługują. Narzędzie ssh-copy-id automatyzuje dopisanie klucza publicznego do authorized_keys. W praktyce bardzo ważne są uprawnienia: katalog ~/.ssh powinien być dostępny tylko dla właściciela, a plik authorized_keys nie może być zapisywalny przez innych użytkowników. Do testowania konkretnego klucza używa się ssh -i. Jeśli logowanie nie działa, warto sprawdzić, czy używany jest właściwy użytkownik, właściwy klucz, poprawny plik publiczny na serwerze oraz poprawne uprawnienia katalogów i plików.
2. Przykłady komend
ssh-keygen -t ed25519 -C "admin@example.com"
Tworzy nową parę kluczy SSH typu ed25519 z komentarzem.
$ ssh-keygen -t ed25519 -C "admin@example.com"
ssh-copy-id user@example.com
Kopiuje domyślny klucz publiczny do authorized_keys na serwerze.
$ ssh-copy-id user@example.com
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@example.com
Kopiuje wskazany klucz publiczny na serwer.
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub user@example.com
chmod 700 ~/.ssh
Ustawia prywatne uprawnienia katalogu .ssh.
$ chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Ustawia bezpieczne uprawnienia pliku authorized_keys.
$ chmod 600 ~/.ssh/authorized_keys
ssh -i ~/.ssh/id_ed25519 user@example.com
Łączy się z serwerem przy użyciu wskazanego klucza prywatnego.
$ ssh -i ~/.ssh/id_ed25519 user@example.com
3. Zadanie praktyczne
ssh-keygen -t ed25519 -C "lab@example.com", pilnując, aby nie nadpisać ważnego klucza. Sprawdź, które pliki powstały w ~/.ssh. Jeśli masz serwer testowy, skopiuj klucz publiczny przez ssh-copy-id -i ~/.ssh/id_ed25519.pub user@example.com. Na serwerze sprawdź katalog ~/.ssh i plik authorized_keys, a potem ustaw chmod 700 ~/.ssh i chmod 600 ~/.ssh/authorized_keys. Na końcu przetestuj logowanie przez ssh -i ~/.ssh/id_ed25519 user@example.com.
4. Typowe błędy
- Kopiowanie klucza prywatnego na serwer zamiast publicznego.
- Nadpisanie używanego klucza bez sprawdzenia jego roli.
- Zbyt szerokie uprawnienia katalogu .ssh lub pliku authorized_keys.
- Logowanie na innego użytkownika niż ten, którego authorized_keys został uzupełniony.
- Używanie ssh -i z plikiem .pub zamiast kluczem prywatnym.
- Brak hasła do klucza prywatnego na komputerze używanym poza laboratorium.
5. Podsumowanie
Klucze SSH składają się z części prywatnej i publicznej. Prywatna zostaje u użytkownika, publiczna trafia na serwer do authorized_keys. ssh-keygen tworzy klucze, ssh-copy-id kopiuje klucz publiczny, chmod pomaga ustawić poprawne uprawnienia, a ssh -i pozwala wskazać konkretny klucz przy logowaniu.