1. Wstęp
Korzystając z SSH na Ubuntu, możesz bezpiecznie uzyskać dostęp i zarządzać swoim serwerem lub komputerem PC zdalnie. Ten przewodnik wyjaśnia wszystko, od podstaw SSH po instalację serwera SSH na Ubuntu, środki bezpieczeństwa i rozwiązywanie problemów. Jest zaprojektowany tak, aby był przyjazny dla początkujących i łatwy do zrozumienia.
Czym jest SSH?
SSH (Secure Shell) to protokół umożliwiający bezpieczne zdalne połączenia przez sieć. W przeciwieństwie do tradycyjnego Telnet lub FTP, SSH szyfruje dane, co znacznie zmniejsza ryzyko podsłuchiwania i manipulacji.
Główne zastosowania SSH na Ubuntu
SSH jest powszechnie używany na Ubuntu w następujących celach:
- Zdalne zarządzanie serwerem : Obsługa serwera Ubuntu z zdalnej lokalizacji.
- Transfer plików : Bezpieczne przesyłanie plików za pomocą SCP lub SFTP.
- Przekierowanie portów : Ustanowienie bezpiecznego zdalnego połączenia.
Czego dowiesz się z tego przewodnika
- Podstawowe koncepcje i działanie SSH
- Jak zainstalować serwer SSH na Ubuntu
- Ustawienia połączeń SSH i rozwiązywanie problemów
- Środki bezpieczeństwa dla SSH
2. Podstawowe koncepcje SSH
Aby efektywnie korzystać z SSH, ważne jest zrozumienie jego podstawowych koncepcji. Ten rozdział wyjaśnia, jak działa SSH i różne metody uwierzytelniania.
Jak działa SSH
SSH to protokół, który ustanawia bezpieczne połączenie między klientem a serwerem. Domyślnie używa portu TCP 22 do szyfrowanej komunikacji.
Główne funkcje
- Zdalne logowanie : Wykonywanie poleceń na serwerze.
- Transfer plików : Bezpieczne wysyłanie danych za pomocą SCP lub SFTP.
- Przekierowanie portów : Połączenie z innymi usługami za pośrednictwem SSH.
Metody uwierzytelniania SSH
SSH obsługuje głównie dwie metody uwierzytelniania:
Uwierzytelnianie hasłem
- Logowanie za pomocą nazwy użytkownika i hasła.
- Łatwe w użyciu, ale podatne na ataki brute force.
Uwierzytelnianie kluczem publicznym
- Uwierzytelnianie za pomocą pary kluczy publicznych i prywatnych.
- Bardziej bezpieczne i zalecane zamiast uwierzytelniania hasłem.
Zalety SSH
- Szyfrowanie danych : Chroni komunikację przed przechwyceniem.
- Łatwe zdalne zarządzanie : Dostępne z dowolnego miejsca.
- Wzmocnione bezpieczeństwo : Pomaga zapobiegać nieautoryzowanemu dostępowi.
3. Instalacja serwera SSH na Ubuntu
Aby korzystać z SSH na Ubuntu, musisz zainstalować serwer OpenSSH. Ten rozdział wyjaśnia kroki instalacji i podstawową konfigurację.
Instalacja serwera OpenSSH
Możesz zainstalować serwer OpenSSH na Ubuntu za pomocą następującego polecenia:
sudo apt update
sudo apt install openssh-server
Po instalacji sprawdź, czy usługa SSH działa:
sudo systemctl status ssh
Uruchamianie i sprawdzanie usługi SSH
Aby ręcznie uruchomić lub zatrzymać usługę SSH, użyj następujących poleceń:
# Start SSH
sudo systemctl start ssh
# Enable SSH to start automatically on reboot
sudo systemctl enable ssh
# Stop SSH
sudo systemctl stop ssh
Konfigurowanie UFW (Uncomplicated Firewall)
Jeśli UFW jest domyślnie włączony, połączenia SSH mogą być blokowane. Zezwól na dostęp SSH, uruchamiając:
sudo ufw allow ssh
sudo ufw enable
4. Konfigurowanie połączeń SSH
Aby bezpiecznie korzystać z SSH, właściwa konfiguracja jest niezbędna. Ten rozdział wyjaśnia, jak skonfigurować uwierzytelnianie kluczem publicznym.
Generowanie pary kluczy
Po stronie klienta uruchom następujące polecenie, aby utworzyć parę kluczy publicznych i prywatnych:
ssh-keygen -t rsa -b 4096
Domyślnie klucz prywatny jest zapisywany w ~/.ssh/id_rsa, a klucz publiczny w ~/.ssh/id_rsa.pub.
Kopiowanie klucza publicznego na serwer
Przenieś wygenerowany klucz publiczny na serwer SSH:
ssh-copy-id username@server-ip
Alternatywnie, ręcznie skopiuj klucz za pomocą SCP:
scp ~/.ssh/id_rsa.pub username@server-ip:~/
Na serwerze przenieś klucz publiczny do odpowiedniego katalogu:
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub
Edycja pliku sshd_config
Wzmocnij bezpieczeństwo, modyfikując plik konfiguracyjny SSH:
sudo nano /etc/ssh/sshd_config
Aktualizuj następujące ustawienia:
# Disable password authentication (enable public key authentication only)
PasswordAuthentication no
# Disable root login
PermitRootLogin no
# Change the default SSH port (example: 2222)
Port 2222
Po wprowadzeniu zmian uruchom ponownie usługę SSH:
sudo systemctl restart ssh
5. Łączenie się z serwerem SSH
Po skonfigurowaniu serwera SSH musisz połączyć się z nim z maszyny klienckiej. Ten rozdział wyjaśnia podstawowe metody połączenia SSH oraz obsługę zmian portów.
Podstawowa komenda połączenia SSH
Aby połączyć się z serwerem SSH z klienta, użyj:
ssh username@server-ip
Na przykład, jeśli adres IP serwera to 192.168.1.10, a nazwa użytkownika to ubuntu, wpisz:
ssh ubuntu@192.168.1.10
Podczas pierwszego połączenia zobaczysz monit weryfikacji odcisku palca. Wpisz „yes”, aby zaakceptować i kontynuować.
Łączenie z niestandardowym portem
Jeśli domyślny port (22) został zmieniony, określ port za pomocą opcji -p:
ssh -p 2222 ubuntu@192.168.1.10
Łączenie z kluczem prywatnym
Jeśli używasz uwierzytelniania kluczem publicznym, określ klucz prywatny za pomocą opcji -i:
ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10
Uruchamianie zdalnych poleceń przez SSH
Możesz wykonywać zdalne polecenia bez interaktywnego logowania na serwer:
ssh ubuntu@192.168.1.10 "ls -lah /home/ubuntu"
Jest to przydatne do automatyzacji i zdalnego zarządzania.
Przesyłanie plików za pomocą SCP
Użyj SSH do przesyłania plików między lokalnym komputerem a zdalnym serwerem.
Z lokalnego na zdalny
scp filename username@server-ip:/remote/directory
Przykład:
scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/
Z zdalnego na lokalny
scp username@server-ip:/remote/file ./local/directory
Przykład:
scp ubuntu@192.168.1.10:/home/ubuntu/myfile.txt ./
Zarządzanie plikami za pomocą SFTP
Użyj SFTP do zarządzania plikami przez SSH:
sftp ubuntu@192.168.1.10
Po połączeniu możesz używać poleceń takich jak:
ls # List files
cd # Change directory
put file # Upload file from local to remote
get file # Download file from remote to local
exit # Exit SFTP session
6. Rozwiązywanie problemów z połączeniami SSH
Problemy z połączeniami SSH są powszechne. Ten rozdział omawia typowe problemy i ich rozwiązania.
Typowe błędy połączeń SSH i ich naprawy
Jeśli połączenie SSH nie powiodło się, rozważ następujące przyczyny:
1. Serwer SSH nie jest uruchomiony
Sprawdź, czy serwer SSH jest aktywny:
sudo systemctl status ssh
Rozwiązanie:
- Jeśli serwer nie jest uruchomiony, uruchom go za pomocą:
sudo systemctl start ssh
- Upewnij się, że SSH uruchamia się automatycznie po restarcie:
sudo systemctl enable ssh
2. Zapora ogniowa (UFW) blokuje SSH
Jeśli UFW (Uncomplicated Firewall) jest włączony, może blokować dostęp SSH.
Rozwiązanie:
- Sprawdź bieżące ustawienia UFW:
sudo ufw status
- Zezwól na połączenia SSH:
sudo ufw allow ssh
(Jeśli używasz niestandardowego portu, uruchom sudo ufw allow <port>)
- Uruchom ponownie UFW:
sudo ufw reload
3. Numer portu SSH został zmieniony
Jeśli SSH działa na innym porcie, upewnij się, że podajesz poprawny port podczas łączenia.
Rozwiązanie:
- Sprawdź skonfigurowany port SSH:
sudo grep Port /etc/ssh/sshd_config
- Użyj poprawnego portu podczas łączenia:
ssh -p 2222 username@server-ip
4. Nieprawidłowe uprawnienia kluczy SSH
Nieprawidłowe uprawnienia plików dla kluczy SSH mogą powodować niepowodzenie uwierzytelniania.
Rozwiązanie:
- Upewnij się, że klucz prywatny ma poprawne uprawnienia:
chmod 600 ~/.ssh/id_rsa
- Upewnij się, że plik kluczy autoryzowanych jest poprawnie ustawiony:
chmod 644 ~/.ssh/authorized_keys
5. Sprawdzanie logów SSH
Aby zdiagnozować problemy z SSH, sprawdź logi:
sudo journalctl -u ssh --no-pager | tail -n 20
Do monitorowania logów w czasie rzeczywistym:
sudo tail -f /var/log/auth.log
7. Wzmacnianie bezpieczeństwa SSH
SSH jest potężnym narzędziem do zdalnego dostępu, ale bez odpowiednich środków bezpieczeństwa może stać się celem nieautoryzowanego dostępu i ataków brute‑force. Ta sekcja wyjaśnia zalecane konfiguracje zwiększające bezpieczeństwo SSH.
1. Wyłącz uwierzytelnianie hasłem i używaj uwierzytelniania kluczem publicznym
Domyślnie SSH zezwala na uwierzytelnianie hasłem, co zwiększa ryzyko ataków brute‑force.zejście na uwierzytelnianie kluczem publicznym podnosi poziom bezpieczeństwa.
Kroki
- Edytuj plik
sshd_config:
sudo nano /etc/ssh/sshd_config
- Zmodyfikuj (lub dodaj) następujące ustawienia:
PasswordAuthentication no
PubkeyAuthentication yes
- Zrestartuj usługę SSH:
sudo systemctl restart ssh
To zapewnia, że SSH akceptuje jedynie uwierzytelnianie przy użyciu kluczy publicznych. Upewnij się, że skonfigurowałeś uwierzytelnianie kluczem publicznym przed wprowadzeniem tej zmiany.
2. Zmień domyślny port SSH
Używanie domyślnego portu SSH (22) czyni go łatwym celem ataków. Zmiana portu zwiększa bezpieczeństwo.
Kroki
- Otwórz plik
sshd_config:
sudo nano /etc/ssh/sshd_config
- Zmodyfikuj numer portu (np. zmień na 2222):
Port 2222
- Zezwól na nowy port w zaporze sieciowej:
sudo ufw allow 2222/tcp
- Zrestartuj usługę SSH:
sudo systemctl restart ssh
- Przetestuj nowy port:
ssh -p 2222 username@server-ip
3. Wyłącz logowanie jako root
Domyślnie użytkownik root może logować się przez SSH, co stanowi ryzyko bezpieczeństwa. Zaleca się zezwolić na połączenia tylko wybranym użytkownikom.
Kroki
- Otwórz plik
sshd_config:
sudo nano /etc/ssh/sshd_config
- Zmodyfikuj następujące ustawienie:
PermitRootLogin no
- Zrestartuj usługę SSH:
sudo systemctl restart ssh
4. Zapobiegaj atakom brute‑force przy pomocy Fail2Ban
Fail2Ban monitoruje próby logowania i blokuje adresy IP po wielokrotnych nieudanych próbach uwierzytelnienia.
Instalacja i konfiguracja
- Zainstaluj Fail2Ban:
sudo apt install fail2ban -y
- Skopiuj domyślny plik konfiguracyjny:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Edytuj
jail.local:
sudo nano /etc/fail2ban/jail.local
- Zmodyfikuj ustawienia w sekcji
[sshd]:
[sshd]
enabled = true
maxretry = 5
bantime = 600
findtime = 600
maxretry: Maksymalna dopuszczalna liczba prób logowania.bantime: Czas (w sekundach), przez który adres IP będzie zablokowany.findtime: Okres (w sekundach), w którym liczone są nieudane próby.
- Zrestartuj Fail2Ban:
sudo systemctl restart fail2ban
- Sprawdź status Fail2Ban:
sudo fail2ban-client status sshd
8. Najczęściej zadawane pytania (FAQ)
Ta sekcja odpowiada na typowe pytania i problemy związane z używaniem SSH.
P1: Dlaczego połączenie SSH jest odrzucane?
Możliwe przyczyny:
- Usługa SSH nie działa → Sprawdź poleceniem
sudo systemctl status ssh - Zapora blokuje SSH → Zezwól na SSH poleceniem
sudo ufw allow ssh - Używany jest niestandardowy port → Połącz się używając
ssh -p <port> username@server-ip
P2: Jak zmienić domyślny port SSH?
Zmień plik sshd_config:
sudo nano /etc/ssh/sshd_config
Zmień port:
Port 2222
Następnie zrestartuj SSH:
sudo systemctl restart ssh
P3: Jak zezwolić tylko wybranym adresom IP na dostęp do SSH?
Zmień ustawienia zapory sieciowej:
sudo ufw allow from 192.168.1.100 to any port 22
Lub użyj hd_config:
AllowUsers username@192.168.1.100
9. Zakończenie
Ten przewodnik omówił wszystko, od podstaw SSH po ulepszenia bezpieczeństwa. Oto najważniejsze wnioski:
- Używaj uwierzytelniania kluczem publicznym zamiast haseł.
- Zmieniaj domyślny port SSH dla lepszego bezpieczeństwa.
- Wyłącz logowanie jako root, aby zapobiec nieautoryzowanemu dostępowi.
- Korzystaj z Fail2Ban, aby blokować ataki brute‑force.
- Monitoruj logi SSH w celu rozwiązywania problemów.
Dodatkowe zasoby
Stosując te najlepsze praktyki, możesz utrzymać bezpieczne i wydajne środowisko SSH. 🚀




