Konfiguracja serwera SSH Linux – kompletny przewodnik krok po kroku
Konfiguracja serwera SSH Linux to kluczowy element zarządzania zdalnym dostępem do systemu operacyjnego z rodziny Unix. Secure Shell (SSH) to protokół szyfrowany, który umożliwia administratorom i użytkownikom bezpieczne logowanie się do zdalnych maszyn, przesyłanie plików oraz uruchamianie poleceń.
W tym artykule przedstawiamy kompletny przewodnik po konfiguracji SSH na systemie Linux – od podstawowych ustawień, przez zwiększenie bezpieczeństwa, aż po zaawansowane funkcje, takie jak uwierzytelnianie kluczem publicznym, logowanie bez hasła i tunelowanie portów.
1. Czym jest SSH?
SSH (Secure Shell) to protokół komunikacyjny używany do bezpiecznej komunikacji między dwoma komputerami. Umożliwia on:
- Zdalne logowanie do systemu
- Przesyłanie plików (SCP, SFTP)
- Tunelowanie portów
- Zdalne wykonywanie poleceń
SSH działa w modelu klient-serwer, gdzie na serwerze działa demon sshd, a po stronie klienta korzystamy z polecenia ssh.

2. Instalacja serwera SSH w systemie Linux
Debian, Ubuntu:
sudo apt update
sudo apt install openssh-server
CentOS, RHEL, Fedora:
sudo dnf install openssh-server
Arch Linux:
sudo pacman -S openssh
Po instalacji należy uruchomić i włączyć usługę:
sudo systemctl enable ssh
sudo systemctl start ssh
Sprawdzenie statusu:
sudo systemctl status ssh
3. Domyślna konfiguracja pliku sshd_config
Główny plik konfiguracyjny znajduje się pod:
/etc/ssh/sshd_config
Najważniejsze dyrektywy:
| Dyrektywa | Opis |
|---|---|
Port |
Domyślnie 22, można zmienić na inny dla bezpieczeństwa |
PermitRootLogin |
Czy pozwalać rootowi na logowanie |
PasswordAuthentication |
Czy umożliwić logowanie hasłem |
PubkeyAuthentication |
Czy włączyć logowanie kluczem publicznym |
AllowUsers |
Lista dozwolonych użytkowników |
MaxAuthTries |
Maksymalna liczba prób logowania |
AllowTcpForwarding |
Tunelowanie portów |
Edytuj plik:
sudo nano /etc/ssh/sshd_config
Po każdej zmianie należy zrestartować usługę:
sudo systemctl restart ssh
4. Zmiana portu SSH
Zmienienie portu z domyślnego (22) na inny utrudnia ataki brute-force.
W pliku /etc/ssh/sshd_config:
Port 2222
Zrestartuj usługę:
sudo systemctl restart ssh
Upewnij się, że nowy port jest otwarty w firewallu:
sudo ufw allow 2222/tcp
5. Logowanie bez hasła – klucze SSH
Generowanie pary kluczy na komputerze klienta:
ssh-keygen -t rsa -b 4096
Domyślnie klucz zostanie zapisany w ~/.ssh/id_rsa i ~/.ssh/id_rsa.pub.
Przesłanie klucza na serwer:
ssh-copy-id user@adres_ip
Alternatywnie:
cat ~/.ssh/id_rsa.pub | ssh user@adres_ip 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
Upewnij się, że pliki mają odpowiednie uprawnienia:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Wyłącz logowanie hasłem:
PasswordAuthentication no
Restartuj usługę:
sudo systemctl restart ssh
6. Ograniczanie dostępu do serwera SSH
Blokowanie logowania roota:
W pliku sshd_config:
PermitRootLogin no
Pozwalanie tylko określonym użytkownikom:
AllowUsers admin user1
Ustawienie maksymalnej liczby prób logowania:
MaxAuthTries 3
7. Konfiguracja firewall dla SSH
UFW (Ubuntu):
sudo ufw allow 22/tcp
sudo ufw enable
Firewalld (Fedora, RHEL):
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
8. Bezpieczne praktyki
- Używaj kluczy SSH zamiast haseł
- Zmień domyślny port
- Używaj Fail2Ban do blokowania nieautoryzowanych prób
- Monitoruj logi:
sudo journalctl -u sshlub/var/log/auth.log - Stosuj aktualizacje systemowe
9. Tunelowanie i przekierowywanie portów przez SSH
Tunelowanie portów umożliwia dostęp do usług działających tylko lokalnie na serwerze.
Tunel lokalny (Local Forwarding):
ssh -L 8080:localhost:80 user@adres_ip
Tunel zdalny (Remote Forwarding):
ssh -R 2222:localhost:22 user@adres_ip
Dynamiczny tunel (SOCKS proxy):
ssh -D 1080 user@adres_ip
10. Ustawienia klienta SSH
Konfiguracja klienta znajduje się w pliku:
~/.ssh/config
Przykład:
Host mojserwer
HostName 192.168.1.100
User jan
Port 2222
IdentityFile ~/.ssh/id_rsa
11. Automatyczne logowanie i cron z SSH
Używając kluczy SSH można uruchamiać zdalne komendy np. przez cron:
ssh user@adres 'uptime >> /home/user/logs.txt'
12. Alternatywne metody logowania – SSH z dwuskładnikowym uwierzytelnianiem (2FA)
Zainstaluj google-authenticator lub libpam-google-authenticator, skonfiguruj PAM i dodaj do sshd_config:
AuthenticationMethods publickey,keyboard-interactive
13. Monitorowanie i audyt połączeń SSH
Przykładowe komendy:
- Bieżące połączenia:
who
- Historia logowań:
last -a | grep 'ssh'
- Audyt poleceń (z pomocą
auditdlubpsacct)
14. Podsumowanie
Konfiguracja serwera SSH Linux jest podstawową, ale niezwykle ważną czynnością dla każdego administratora systemu. Od prostych ustawień po zaawansowane techniki bezpieczeństwa – SSH to potężne narzędzie umożliwiające zdalną kontrolę, zarządzanie i automatyzację.
Dzięki temu przewodnikowi dowiedziałeś się, jak:
- Zainstalować i uruchomić serwer SSH
- Skonfigurować porty, dostęp użytkowników, klucze i bezpieczeństwo
- Wykorzystać tunelowanie i zaawansowane techniki
- Zapewnić stabilność, szybkość i bezpieczeństwo zdalnych połączeń
Prawidłowo skonfigurowany SSH to fundament zarządzania każdym serwerem Linux – od domowego NAS po produkcyjne serwery w chmurze.






