SSH (Secure Shell) to protokół komunikacyjny, który pozwala na bezpieczne (szyfrowane) połączenie terminalowe z odległym komputerem.
Bezpieczeństwo: Wszystko, co wpisujesz (hasła, komendy), jest szyfrowane.
Architektura: Działa w modelu Klient-Serwer.
Serwer: Program sshd (nasłuchuje na połączenia).
Klient: Program ssh (inicjuje połączenie).
Port: Domyślnie 22 (TCP).
Na większości serwerów (np. Ubuntu Server) SSH jest zainstalowane, ale warto znać te komendy:
Instalacja: sudo apt install openssh-server
Sprawdzenie statusu: sudo systemctl status ssh
Restart po zmianach: sudo systemctl restart ssh
/etc/ssh/sshd_config)Główny plik konfiguracyjny to /etc/ssh/sshd_config (pamiętaj o literce d na końcu – oznacza ona daemon, czyli usługę serwera).
Najważniejsze opcje (Dobre praktyki):
| Opcja | Opis | Rekomendacja |
Port 22 | Numer portu, na którym nasłuchuje serwer. | Zmień na niestandardowy (np. 2222), by uniknąć botów. |
PermitRootLogin | Czy użytkownik root może logować się przez SSH. | Ustaw na no (loguj się jako zwykły użytkownik + sudo). |
PasswordAuthentication | Czy logowanie hasłem jest dozwolone. | Docelowo no (używaj kluczy SSH). |
MaxAuthTries | Liczba nieudanych prób logowania przed rozłączeniem. | Ustaw na 3. |
AllowUsers | Lista konkretnych użytkowników, którzy mogą się logować. | Wpisz tylko niezbędne nazwy użytkowników. |
To najbezpieczniejsza metoda. Zamiast wpisywać hasło, serwer rozpoznaje Twój „podpis cyfrowy”.
Generowanie kluczy na kliencie (Twoim PC): ssh-keygen -t ed25519 (tworzy klucz prywatny i publiczny).
Przesłanie klucza publicznego na serwer: ssh-copy-id uzytkownik@ip-serwera
Efekt: Logujesz się bez pytania o hasło, a Twój serwer jest odporny na ataki typu Brute Force.
Najważniejsze polecenia SSH:
| Komenda | Opis |
ssh user@ip | Standardowe połączenie z serwerem. |
ssh -p [port] user@ip | Połączenie na niestandardowym porcie. |
ssh-keygen -t ed25519 | Generowanie bezpiecznej pary kluczy. |
ssh-copy-id user@ip | Wysyłanie klucza publicznego na serwer. |
scp plik.txt user@ip:/home/ | Bezpieczne kopiowanie pliku na serwer. |
exit | Zakończenie sesji SSH i powrót na lokalny komputer. |
Zadanie 1: Podstawowa konfiguracja
Zmień ustawienia serwera SSH tak, aby:
Serwer nasłuchiwał na porcie 2200.
Zablokowane było logowanie bezpośrednio na konto root.
Maksymalna liczba prób wpisania hasła wynosiła 2.
Po zmianach zrestartuj usługę i sprawdź, czy nadal możesz się połączyć.
Zadanie 2: Baner powitalny
Stwórz plik tekstowy /etc/issue.net z ostrzeżeniem: „Wstęp tylko dla upoważnionych!”. Następnie skonfiguruj SSH tak, aby wyświetlało ten baner każdemu przed zalogowaniem (opcja Banner).
Zadanie 3: Klucze SSH
Wygeneruj parę kluczy na swoim komputerze lokalnym i prześlij klucz publiczny na serwer. Skonfiguruj serwer tak, aby całkowicie wyłączyć możliwość logowania się tradycyjnym hasłem (PasswordAuthentication no).
Zadanie 4: Debugowanie (Znajdź błąd)
Uczeń zmienił port SSH w konfiguracji na 2222, zrestartował usługę, ale teraz nie może się połączyć z serwerem. Wskaż 3 możliwe przyczyny problemu.