Bezpieczny dostęp do serwera (SSH keys)
Scenariusz z życia
Logowanie hasłem do SSH jest wygodne, ale podatne na brute-force i przechwycenie. Standard w produkcji: uwierzytelnianie kluczem (para klucz prywatny + publiczny). Klucz prywatny zostaje na Twoim komputerze, publiczny na serwerze w ~/.ssh/authorized_keys. Po wyłączeniu logowania hasłem serwer jest odporny na ataki na hasło.
Co się dzieje w systemie
ssh-keygen generuje parę kluczy (np. ed25519 lub RSA). Klucz publiczny (.pub) trafia do ~/.ssh/authorized_keys na koncie użytkownika na serwerze. Przy połączeniu klient dowodzi, że ma klucz prywatny (bez przesyłania go); serwer weryfikuje podpis. W sshd_config: PasswordAuthentication no (po wgraniu kluczy), PubkeyAuthentication yes. Agent ssh (ssh-agent) trzyma odblokowane klucze w sesji, żeby nie wpisywać passphrase za każdym razem.
Co administrator zyskuje
Brak ataków brute-force na hasło; nawet przy wycieku hasła bez klucza prywatnego nikt się nie zaloguje. Można wymagać passphrase na kluczu — drugi faktor. Automatyzacja (skrypty, backup) — skrypt używa klucza bez podawania hasła.
Typowy błąd
Wyłączyć PasswordAuthentication zanim klucz nie działa — możesz się zablokować. Albo: źle ustawione uprawnienia na ~/.ssh (700) lub authorized_keys (600) — SSH odrzuci klucz ze względów bezpieczeństwa. Albo: trzymać klucz prywatny na współdzielonym dysku bez hasła — kto ma dostęp do pliku, ma dostęp do serwera.
Myślenie administratora
Najpierw dodaj klucz i sprawdź logowanie; dopiero potem wyłącz hasła. Uprawnienia: .ssh 700, authorized_keys 600. Klucz prywatny tylko na zaufanym komputerze, z passphrase jeśli możliwe. Rotacja kluczy przy zmianie osoby lub komputera.
Zapamiętaj – 4 fakty praktyczne
- SSH keys: ssh-keygen, klucz publiczny w ~/.ssh/authorized_keys na serwerze; logowanie bez hasła.
- Po wgraniu klucza: przetestuj, potem w sshd_config ustaw PasswordAuthentication no.
- Uprawnienia: ~/.ssh = 700, authorized_keys = 600 — inaczej SSH może nie zaakceptować klucza.
- Klucz prywatny = jak hasło — tylko na zaufanym hoście, z passphrase dla dodatkowego zabezpieczenia.