Jak i dlaczego używać poleceń ssh-copy-id i ssh-keygen w systemie Linux
Secure Shell (SSH) jest jednym z najczęściej używanych narzędzi do bezpiecznego zarządzania i uzyskiwania dostępu do systemów zdalnych. Zamiast polegać na tradycyjnej autoryzacji opartej na hasłach, która jest mniej bezpieczna i podatna na ataki brute-force, administratorzy systemów często konfigurują autoryzację opartą na kluczach SSH dla lepszego bezpieczeństwa, skalowalności i automatyzacji.
Ten przewodnik wyjaśnia, jak wygenerować klucze SSH przy użyciu ssh-keygen, bezpiecznie skopiować je na zdalny serwer przy użyciu ssh-copy-id, zweryfikować konfigurację i przestrzegać najlepszych praktyk bezpieczeństwa.
Zrozumienie autoryzacji opartej na kluczach SSH
W przypadku kluczy SSH autoryzacja odbywa się za pomocą pary kluczy publicznych i prywatnych:
- Klucz prywatny (id_rsa) → Pozostaje na twoim lokalnym komputerze i musi być chroniony.
- Klucz publiczny (id_rsa.pub) → Umieszczany na zdalnym serwerze w ~/.ssh/authorized_keys.
- Podczas łączenia się SSH używa kryptografii klucza publicznego, aby automatycznie cię uwierzytelnić, nie ujawniając haseł.
Ta metoda jest bezpieczniejsza i wygodniejsza, szczególnie dla programistów, administratorów systemów i automatycznych wdrożeń.
Generowanie kluczy SSH za pomocą ssh-keygen
Uruchom następujące polecenie, aby wygenerować nową parę kluczy SSH:
Wyjaśnienie opcji:
- -t rsa → Określa algorytm szyfrowania (RSA).
- -b 4096 → Używa klucza 4096-bitowego dla silniejszego szyfrowania (zalecane).
- -C → Dodaje komentarz, aby zidentyfikować klucz, zazwyczaj twój adres e-mail lub nazwę użytkownika.
Interaktywne monity:
Plik do zapisania klucza → Naciśnij Enter, aby zaakceptować domyślną wartość:
~/.ssh/id_rsaHasło (opcjonalne, ale zalecane) → Dodaje dodatkową warstwę bezpieczeństwa.
Jeśli jest ustawione, będziesz musiał je wprowadzić podczas używania klucza prywatnego.
Kopiowanie klucza publicznego na zdalny serwer (ssh-copy-id)
Po wygenerowaniu kluczy użyj ssh-copy-id, aby przesłać swój klucz publiczny na zdalny serwer:
- użytkownik → Nazwa użytkownika na zdalnym serwerze.
- zdalny-serwer → Nazwa hosta lub adres IP zdalnej maszyny.
To polecenie:
Dodaje twój klucz publiczny (id_rsa.pub) do:
Automatycznie ustawia prawidłowe uprawnienia dla katalogu .ssh i pliku klucza.
Alternatywna metoda (ręczna konfiguracja)
Jeśli ssh-copy-id nie jest dostępne, możesz ręcznie skopiować klucz:
To polecenie:
- Tworzy katalog .ssh, jeśli brakuje.
- Dodaje twój klucz publiczny.
- Ustawia bezpieczne uprawnienia.
Weryfikacja autoryzacji klucza SSH
Aby potwierdzić, że wszystko działa:
Jeśli skonfigurowano poprawnie, powinieneś zalogować się bez wprowadzania hasła.
Jeśli ustawiono hasło, zostaniesz o nie poproszony.
Najlepsze praktyki bezpieczeństwa
a) Używaj silnego szyfrowania
Preferuj RSA 4096 lub Ed25519:
Klucze Ed25519 są mniejsze, szybsze i bardziej bezpieczne.
b) Ogranicz uprawnienia do plików kluczy
SSH odmówi użycia kluczy, jeśli uprawnienia są zbyt otwarte.
c) Wyłącz autoryzację hasłem (opcjonalne, zalecane)
Na zdalnym serwerze edytuj:
Ustaw:
Następnie uruchom ponownie SSH:
d) Użyj agenta SSH do zarządzania hasłem
Zamiast wpisywać swoje hasło za każdym razem, użyj ssh-agent:
To buforuje twój klucz na sesję.
Rozwiązywanie powszechnych problemów
| Problem | Możliwa przyczyna | Rozwiązanie |
|---|---|---|
| Wciąż prosi o hasło | Błędne uprawnienia lub brakujący klucz | Sprawdź uprawnienia ~/.ssh i authorized_keys |
| Błąd „Odmowa dostępu” | Błędna nazwa użytkownika lub IP | Potwierdź poprawne dane logowania |
| ssh-copy-id nie znaleziono | Brakujący program | Zainstaluj za pomocą: sudo apt install openssh-client |
| Klucz zignorowany | Zbyt otwarte uprawnienia plików | Uruchom chmod 600 ~/.ssh/id_rsa |
Podsumowanie
Użycie ssh-keygen i ssh-copy-id zwiększa bezpieczeństwo i wygodę podczas zarządzania zdalnymi serwerami. Konfigurując autoryzację klucza SSH, administratorzy mogą wyeliminować ryzyko związane z logowaniem opartym na hasłach, jednocześnie upraszczając bezpieczny dostęp.


