Klucze SSH — generowanie i konfiguracja
Klucze SSH to narzędzie do bezpiecznego uwierzytelniania bez użycia hasła. Zamiast wpisywać hasło przy każdym logowaniu, używasz pary kluczy: prywatnego (przechowywanego na twoim komputerze) i publicznego (dodawanego do serwera).
Podczas logowania serwer sprawdza, czy twój klucz publiczny pasuje do klucza prywatnego. Klucze są znacznie trudniejsze do złamania niż hasła — generowane są z dużej ilości losowych danych kryptograficznych.
Dostępne algorytmy
| Algorytm | Podstawa | Rekomendacja |
|---|---|---|
| ED25519 | Krzywe Edwardsa | Zalecany — krótki klucz, wysoka odporność |
| ECDSA | Krzywe eliptyczne | Dobra alternatywa, szerokie wsparcie |
| RSA | Faktoryzacja liczb całkowitych | Używaj gdy serwer nie obsługuje ED25519 (klucz min. 4096 bitów) |
| DSA | Podpis cyfrowy | Przestarzały — nie używaj |
W tym poradniku używamy ED25519. Obsługiwany jest przez OpenSSH 6.5+ (2014), czyli praktycznie wszędzie.
Generowanie kluczy — macOS i Linux
Otwórz terminal i wpisz:
ssh-keygen -t ed25519 -C "[email protected]"Kreator zapyta o lokalizację pliku (możesz zatwierdzić domyślną klawiszem Enter) oraz hasło do klucza. Hasło jest opcjonalne — jeśli chcesz logować się bez żadnego potwierdzenia, zostaw puste.
Po wygenerowaniu w katalogu ~/.ssh/ znajdziesz dwa pliki:
~/.ssh/id_ed25519— klucz prywatny (nigdy go nie udostępniaj)~/.ssh/id_ed25519.pub— klucz publiczny (ten dodajesz na serwery)
Dodawanie klucza do ssh-agent
Jeśli używasz hasła do klucza, ssh-agent zapamiętuje je na czas sesji — nie musisz wpisywać go przy każdym połączeniu.
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519Na macOS możesz zapisać hasło w Keychain:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519Konfiguracja pliku ~/.ssh/config
Plik ~/.ssh/config pozwala przypisać skrócone nazwy do połączeń — zamiast podawać pełny adres i użytkownika przy każdym ssh, wpisujesz tylko alias.
Otwórz lub utwórz plik ~/.ssh/config i dodaj wpis:
Host joton
Hostname twojadomena.pl
User nazwakonta
IdentityFile ~/.ssh/id_ed25519Host— alias używany w poleceniussh jotonHostname— adres IP lub domena serweraUser— nazwa użytkownika SSHIdentityFile— ścieżka do klucza prywatnego
Po skonfigurowaniu logujesz się jednym poleceniem:
ssh jotonGenerowanie kluczy — Windows
Windows 10 i Windows 11 mają wbudowany klient OpenSSH. Otwórz PowerShell lub Wiersz polecenia i wpisz:
ssh-keygen -t ed25519 -C "[email protected]"Klucze zostaną zapisane w C:\Users\NazwaUzytkownika\.ssh\:
id_ed25519— klucz prywatnyid_ed25519.pub— klucz publiczny
💡 Brak polecenia ssh-keygen na Windows?
Jeśli system zgłasza błąd "nie rozpoznano polecenia", zainstaluj OpenSSH: Ustawienia → Aplikacje → Funkcje opcjonalne → wyszukaj i dodaj Klient OpenSSH.
Dodawanie klucza publicznego na hosting Joton
Klucz publiczny dodajesz w panelu administracyjnym Joton. Szczegółowa instrukcja: Logowanie do SSH.
⚠️ Klucz publiczny, nie prywatny
Na serwer wgrywasz wyłącznie plik z rozszerzeniem .pub — id_ed25519.pub. Nigdy nie udostępniaj pliku id_ed25519 (bez rozszerzenia) — to twój klucz prywatny.
Dodawanie klucza do VPS bez panelu
Na VPS lub dedykowanym serwerze bez panelu zarządzania klucz dodajesz ręcznie:
- Zaloguj się hasłem na konto SSH.
- Otwórz plik
~/.ssh/authorized_keys(jeśli nie istnieje, utwórz go). - Wklej zawartość pliku
~/.ssh/id_ed25519.pubz twojego komputera jako nową linię. - Zapisz plik.
Po dodaniu klucza wyłącz logowanie hasłem — edytuj /etc/ssh/sshd_config:
PasswordAuthentication noZrestartuj usługę SSH:
systemctl restart sshd⚠️ Sprawdź połączenie przed wylogowaniem
Przed zamknięciem bieżącej sesji otwórz nowe okno terminala i sprawdź, czy możesz zalogować się kluczem. Jeśli coś poszło nie tak i wylogujesz się wcześniej — stracisz dostęp do serwera.
Najczęstsze problemy
Jeśli połączenie SSH nie działa, uruchom je z flagą -vv aby zobaczyć szczegółowy log negocjacji:
ssh -vv jotonBłąd "Permission denied (publickey)"
Serwer odrzuca klucz. Sprawdź kolejno:
- Czy dodałeś klucz publiczny (
.pub), a nie prywatny. - Czy plik
~/.ssh/authorized_keysna serwerze ma uprawnienia600, a katalog~/.sshma700:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys- Czy w poleceniu
sshlub w~/.ssh/configwskazujesz właściwy klucz prywatny przezIdentityFile.
Błąd "Bad permissions" lub SSH ignoruje klucz
SSH wymaga ścisłych uprawnień na plikach konfiguracyjnych. Nadaj właściwe uprawnienia:
chmod 600 ~/.ssh/id_ed25519
chmod 600 ~/.ssh/configMam kilka kluczy i SSH używa niewłaściwego
Gdy masz kilka kluczy, SSH może próbować ich w niepożądanej kolejności. Wskaż klucz jawnie:
ssh -i ~/.ssh/id_ed25519 user@hostLub dodaj IdentityFile do wpisu w ~/.ssh/config.
Serwer nie obsługuje ED25519
Starsze systemy (np. CentOS 6, bardzo stary Debian) mogą nie obsługiwać ED25519. Wygeneruj klucz RSA z długością 4096 bitów:
ssh-keygen -t rsa -b 4096 -C "[email protected]"Pomylenie klucza prywatnego z publicznym
Jeśli na serwerze w pliku authorized_keys widzisz linię zaczynającą się od -----BEGIN OPENSSH PRIVATE KEY----- — wgrałeś klucz prywatny zamiast publicznego. Usuń tę linię i wklej zawartość pliku id_ed25519.pub.
Przydatne linki
- Logowanie do SSH — dodawanie klucza publicznego w panelu Joton
- Bezpieczeństwo ciasteczek — inne aspekty bezpieczeństwa aplikacji webowych
- WP-CLI: Zarządzanie z terminala — zarządzanie WordPress przez SSH