Konfiguracja serwera SSH Linux – kompletny przewodnik krok po kroku
Linux

Konfiguracja serwera SSH Linux – kompletny przewodnik krok po kroku

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.

Konfiguracja serwera SSH Linux – kompletny przewodnik krok po kroku
Konfiguracja serwera SSH Linux – kompletny przewodnik krok po kroku

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:

Czytaj  Ekosystem Linux w chmurze
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 ssh lub /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ą auditd lub psacct)

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ę.

Czytaj  Przydatne Skrypty i Aliasy dla Efektywnego Korzystania z Terminala

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.

 

Polecane wpisy
Jak zaszyfrować dysk w Linux
Jak zaszyfrować dysk w Linux

Szyfrowanie dysku to proces zabezpieczania danych przed nieautoryzowanym dostępem. Wykorzystuje on algorytm do zamiany danych na postać nieczytelną dla osób Czytaj dalej

Skąd pobrać Linuxa
Skąd pobrać Linuxa

Skąd pobrać Linuxa? Kompletny przewodnik Linux to popularny system operacyjny typu open source, który oferuje szeroki zakres zastosowań – od Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.