Definicja SSH
SSH (Secure Shell) to kryptograficzny protokół sieciowy umożliwiający bezpieczne logowanie, zarządzanie serwerami i przesyłanie danych przez niezaufane sieci. Używany jest głównie przez administratorów systemów i specjalistów DevOps do zarządzania infrastrukturą z poziomu wiersza poleceń.
Kluczowe funkcje SSH
- Zdalne logowanie - bezpieczny dostęp do powłoki systemu (shell) na serwerze.
- Tunelowanie (port forwarding) - szyfrowanie połączeń innych aplikacji (np. VNC, RDP).
- Transfer plików - poprzez SCP i SFTP.
- Uwierzytelnianie kluczami publicznymi - bezpieczniejsza alternatywa dla haseł.
- Komendy zdalne - uruchamianie poleceń bez pełnej sesji terminala.
Architektura działania
- Klient SSH - uruchamiany na stacji roboczej; inicjuje połączenie z serwerem.
- Serwer SSH (np. OpenSSH) - nasłuchuje na porcie 22 i obsługuje sesje.
- Uwierzytelnianie - hasło lub klucz publiczny/klucz prywatny.
- Kanał szyfrowany - cała komunikacja jest szyfrowana symetrycznie po uzgodnieniu klucza.
Typowe zastosowania
- Zdalne zarządzanie serwerami Linux i BSD.
- Automatyzacja zadań poprzez skrypty (np. Ansible, rsync przez SSH).
- Przekierowanie portów (tunelowanie aplikacji, SSH socks proxy).
- Przesyłanie plików (backup, synchronizacja danych).
- Logowanie bez hasła z wykorzystaniem kluczy SSH.
Zalety SSH
- Szyfrowanie end-to-end - zapewnia poufność i integralność danych.
- Bezpieczne uwierzytelnianie - wspiera uwierzytelnianie asymetryczne.
- Brak potrzeby dodatkowych usług VPN - wystarczy port 22.
- Integracja z narzędziami CI/CD i devops - powszechnie obsługiwany.
Wyzwania i ograniczenia
- Zarządzanie kluczami - wymaga dobrej polityki rotacji i przechowywania.
- Brak GUI - praca odbywa się wyłącznie w terminalu.
- Ryzyko ataków brute-force - szczególnie przy uwierzytelnianiu hasłem.
- Złośliwe skrypty SSH (np. ssh-copy-id w phishingu) - ryzyko socjotechniczne.
Dobre praktyki bezpieczeństwa
- Używanie kluczy RSA/ED25519 zamiast haseł.
- Ograniczenie dostępu tylko z wybranych adresów IP.
- Włączenie uwierzytelniania dwuskładnikowego (np. U2F).
- Monitorowanie logów
/var/log/auth.logpod kątem nieautoryzowanych prób logowania. - Automatyczne blokowanie IP po wielokrotnych błędnych próbach (np. Fail2Ban).
Powiązane narzędzia
| Narzędzie | Opis |
|---|---|
| OpenSSH | Najpopularniejsza implementacja SSH. |
| PuTTY | Klient SSH dla systemów Windows. |
| WinSCP | Graficzny klient SFTP i SCP. |
| Mosh | SSH z lepszym wsparciem dla niestabilnych połączeń. |
| Fail2Ban | Automatyczna ochrona przed brute-force. |
SSH vs inne protokoły
| Protokół | Bezpieczeństwo | Funkcja główna | Wady |
|---|---|---|---|
| SSH | Wysokie | Zdalne zarządzanie | Wymaga dostępu do terminala |
| Telnet | Brak szyfrowania | Zdalna powłoka (archaiczna) | Niebezpieczny - przesyła dane jawnie |
| RDP | Średnie | Zdalny pulpit graficzny | Większe zużycie zasobów |
| VPN | Wysokie | Tunelowanie całej sieci | Bardziej skomplikowana konfiguracja |
SSH i PGP opierają się na parach kluczy, ale chronią co innego: SSH uwierzytelnia i szyfruje połączenie, a PGP szyfruje i podpisuje samą wiadomość albo plik.