Sieć i bezpieczeństwo Podstawowy+ 50 min

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 lekcji

1. 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

W środowisku testowym utwórz parę kluczy poleceniem 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.

Flow nauki
  1. Teoria
  2. Przykład
  3. Ćwiczenie
  4. Quiz
  5. Praktyka
  6. Podsumowanie