ssh-keygen

Generuje i zarządza parami kluczy SSH używanych do uwierzytelniania bez hasła.

ssh-keygen to narzędzie z pakietu OpenSSH, które generuje i zarządza parami kluczy SSH. Zamiast wklepywać hasło do serwera przy każdym logowaniu, tworzysz raz parę: klucz prywatny (zostaje u Ciebie, nigdy go nie oddajesz) i publiczny (wrzucasz na serwer do ~/.ssh/authorized_keys). Od tej chwili logujesz się bezhasłowo i bezpieczniej. Tym samym poleceniem zmienisz też hasło do klucza, wyświetlisz jego odcisk (fingerprint) albo wygenerujesz klucz publiczny z prywatnego, gdy ten pierwszy Ci zaginął.

Składnia i najważniejsze opcje

ssh-keygen [-t typ] [-b bity] [-f plik] [-C komentarz]

  • -t typ — typ klucza: ed25519 (domyślny w nowym OpenSSH i zalecany), rsa, ecdsa, plus warianty -sk dla kluczy sprzętowych FIDO.
  • -b bity — liczba bitów. Dla RSA domyślnie 3072; przy ed25519 ignorowana, bo ten typ ma stałą długość.
  • -f plik — ścieżka pliku wyjściowego klucza prywatnego (publiczny dostanie sufiks .pub).
  • -C komentarz — komentarz doklejany do klucza publicznego, zwykle user@host albo Twój e-mail. Ułatwia rozpoznanie klucza w authorized_keys.
  • -N fraza — ustawia hasło (passphrase) chroniące klucz prywatny. Pusta wartość -N "" = klucz bez hasła.
  • -p — zmiana hasła istniejącego klucza prywatnego (nie tworzy nowego).
  • -y — odtwarza klucz publiczny z prywatnego i wypisuje go na ekran.
  • -l -f plik — pokazuje fingerprint klucza.

Przykłady użycia

  • ssh-keygen -t ed25519 -C "jan@laptop" — tworzy nowoczesny klucz Ed25519 z komentarzem; domyślnie zapisze go w ~/.ssh/id_ed25519.
  • ssh-keygen -t rsa -b 4096 -C "jan@firma" — klucz RSA 4096-bitowy, gdy stary serwer nie obsługuje Ed25519.
  • ssh-keygen -t ed25519 -f ~/.ssh/deploy_key -N "" — klucz bez hasła do automatyki (CI/CD, deploy), zapisany pod własną nazwą.
  • ssh-keygen -p -f ~/.ssh/id_ed25519 — zmienia (lub dodaje) hasło do istniejącego klucza.
  • ssh-keygen -y -f ~/.ssh/id_ed25519 — odtwarza klucz publiczny, gdy zgubiłeś plik .pub.

Częste błędy i pułapki

Klucz prywatny nigdy nie opuszcza Twojej maszyny — na serwer wrzucasz wyłącznie plik .pub. Wysłanie prywatnego to klasyka gatunku i realny problem bezpieczeństwa. Do skopiowania klucza publicznego użyj ssh-copy-id, a nie ręcznego doklejania (łatwo o literówkę albo zły znak nowej linii).

Klucz bez hasła (-N "") jest wygodny, ale jeśli ktoś ukradnie plik prywatny, dostaje gotowy dostęp — trzymaj go dla automatyki, nie dla codziennego loginu. Jeśli zmęczyło Cię wpisywanie hasła, dorzuć klucz do ssh-agent zamiast go usuwać.

Uważaj na uprawnienia: SSH odmówi użycia klucza, gdy ~/.ssh lub plik prywatny są zbyt otwarte — trzymaj chmod 700 ~/.ssh i chmod 600 na kluczu prywatnym. I nie nadpisuj przypadkiem starego id_ed25519ssh-keygen spyta o potwierdzenie, ale -f z tą samą nazwą bez uwagi potrafi Cię odciąć od serwerów.

Powiązane komendy: ssh, ssh-copy-id, ssh-agent, ssh-add, scp.