15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
30.10.2024
2 +1

Jak zainstalować i skonfigurować serwer SSH na Debianie (Kompletny przewodnik)

SSH (Secure Shell) to jeden z najbardziej fundamentalnych protokołów we współczesnej administracji serwerami. Zapewnia szyfrowany, uwierzytelniony kanał do zdalnego dostępu i zarządzania serwerami Linux — co czyni go niezbędnym narzędziem dla administratorów systemów, programistów i każdego, kto zarządza zdalną maszyną. Niezależnie od tego, czy zarządzasz środowiskiem VPS Hosting, czy Serwerem Dedykowanym, prawidłowa instalacja i zabezpieczenie serwera SSH to jedno z pierwszych zadań, które powinieneś wykonać.

W tym kompleksowym przewodniku dowiesz się, jak zainstalować OpenSSH na Debianie, skonfigurować go bezpiecznie, skonfigurować uwierzytelnianie oparte na kluczach oraz zastosować najlepsze praktyki zabezpieczeń, aby chronić serwer przed nieautoryzowanym dostępem.

Wymagania wstępne

Zanim zaczniesz, upewnij się, że masz:

  • Serwer oparty na Debianie (Debian 10 Buster, 11 Bullseye lub 12 Bookworm)
  • Użytkownika bez uprawnień roota z uprawnieniami sudo lub bezpośredni dostęp roota do wstępnej konfiguracji
  • Podstawową znajomość wiersza poleceń Linux
  • Dostęp sieciowy do serwera

Krok 1: Zaktualizuj system i zainstaluj serwer OpenSSH

Przed instalacją jakiegokolwiek oprogramowania dobrą praktyką jest odświeżenie indeksu pakietów i aktualizacja istniejących pakietów do najnowszych wersji. Zapewnia to kompatybilność i zmniejsza podatności bezpieczeństwa.

sudo apt update && sudo apt upgrade -y

Teraz zainstaluj pakiet serwera OpenSSH:

sudo apt install openssh-server -y

Menedżer pakietów pobierze i zainstaluje OpenSSH wraz z wymaganymi zależnościami. Po zakończeniu instalacji usługa SSH jest zazwyczaj uruchamiana automatycznie.

Sprawdź, czy usługa SSH działa

Potwierdź, że usługa ssh jest aktywna i włączona:

sudo systemctl status ssh

Powinieneś zobaczyć dane wyjściowe podobne do:

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since ...

Jeśli usługa nie działa, uruchom ją ręcznie i włącz jej uruchamianie przy starcie systemu:

sudo systemctl start ssh
sudo systemctl enable ssh

Krok 2: Poznaj plik konfiguracyjny SSH

Główny plik konfiguracyjny demona SSH znajduje się pod adresem:

/etc/ssh/sshd_config

Ten plik kontroluje praktycznie każdy aspekt działania serwera SSH — od portu, na którym nasłuchuje, po dozwolone metody uwierzytelniania. Przed wprowadzeniem jakichkolwiek zmian utwórz kopię zapasową oryginalnego pliku:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Teraz otwórz plik w edytorze tekstu:

sudo nano /etc/ssh/sshd_config

Poniższe sekcje przeprowadzą Cię przez najważniejsze opcje konfiguracyjne.

Krok 3: Zabezpiecz konfigurację SSH

3.1 Zmień domyślny port SSH (zalecane)

Domyślnie SSH nasłuchuje na porcie 22. Jest to powszechnie znane, a zautomatyzowane boty stale skanują internet w poszukiwaniu otwartych połączeń na porcie 22, aby próbować ataków brute-force. Zmiana portu na niestandardową wartość znacznie redukuje ten problem.

Znajdź następującą linię (może być zakomentowana znakiem #):

#Port 22

Odkomentuj ją i zmień wartość:

Port 2222

> Uwaga: Wybierz numer portu między 1024 a 65535, który nie jest już używany przez inną usługę. Popularne alternatywy to 2222, 2200 lub 4422. Pamiętaj, aby odpowiednio zaktualizować reguły zapory sieciowej (patrz Krok 5).

3.2 Wyłącz logowanie roota (zdecydowanie zalecane)

Zezwolenie na bezpośrednie logowanie roota przez SSH stanowi poważne zagrożenie bezpieczeństwa. Jeśli atakujący odgadnie lub złamie hasło roota metodą brute-force, uzyska pełną kontrolę nad serwerem. Wyłącz tę opcję, znajdując i modyfikując tę dyrektywę:

PermitRootLogin no

Jeśli musisz wykonywać zadania administracyjne, zaloguj się jako zwykły użytkownik i eskaluj uprawnienia za pomocą sudo.

3.3 Ogranicz dostęp SSH do określonych użytkowników

Możesz umieścić na białej liście określone konta użytkowników, którym zezwolono na logowanie przez SSH. Zapobiega to używaniu nieautoryzowanych lub systemowych kont jako punktów wejścia:

AllowUsers your_username deploy_user

Alternatywnie możesz ograniczyć dostęp według grupy:

AllowGroups sshusers

3.4 Wyłącz uwierzytelnianie hasłem (po skonfigurowaniu uwierzytelniania kluczem)

Gdy uwierzytelnianie kluczem SSH działa (patrz Krok 6), całkowicie wyłącz logowanie oparte na haśle, aby wyeliminować wektory ataku brute-force:

PasswordAuthentication no

3.5 Dodatkowe dyrektywy zabezpieczające

Dodaj lub zmodyfikuj następujące linie, aby uzyskać bardziej solidną postawę bezpieczeństwa:

# Disable empty passwords
PermitEmptyPasswords no

# Limit authentication attempts per connection
MaxAuthTries 3

# Set idle session timeout (seconds)
ClientAliveInterval 300
ClientAliveCountMax 2

# Disable X11 forwarding if not needed
X11Forwarding no

# Use only SSH Protocol 2
Protocol 2

# Restrict to specific address family (IPv4 only example)
AddressFamily inet

Odpowiednia sekcja Twojego finalnego pliku /etc/ssh/sshd_config powinna wyglądać mniej więcej tak:

Port 2222
PermitRootLogin no
MaxAuthTries 3
PasswordAuthentication no
PermitEmptyPasswords no
AllowUsers your_username
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2

Krok 4: Zweryfikuj konfigurację i uruchom ponownie SSH

Przed ponownym uruchomieniem usługi zawsze sprawdź plik konfiguracyjny pod kątem błędów składniowych. Błędnie skonfigurowany sshd_config może zablokować Ci dostęp do serwera:

sudo sshd -t

Jeśli nie zostaną zwrócone żadne błędy, zastosuj zmiany, uruchamiając ponownie demona SSH:

sudo systemctl restart ssh

Sprawdź, czy usługa uruchomiła się poprawnie:

sudo systemctl status ssh

> ⚠️ Ważne: Przed zamknięciem bieżącej sesji SSH otwórz drugie okno terminala i przetestuj nową konfigurację. W ten sposób, jeśli coś pójdzie nie tak, nadal masz aktywną sesję, aby naprawić problem.

Krok 5: Zaktualizuj reguły zapory sieciowej

Jeśli używasz UFW (Uncomplicated Firewall) — domyślnego narzędzia zapory sieciowej w Debianie — musisz zezwolić na ruch na nowym porcie SSH.

Jeśli zmieniłeś port na 2222:

sudo ufw allow 2222/tcp
sudo ufw reload

Jeśli zachowałeś domyślny port 22:

sudo ufw allow ssh
sudo ufw reload

Sprawdź aktualny stan zapory sieciowej:

sudo ufw status verbose

Jeśli UFW nie jest jeszcze włączone, aktywuj je (najpierw upewnij się, że port SSH jest dozwolony, aby uniknąć zablokowania dostępu):

sudo ufw enable

Krok 6: Skonfiguruj uwierzytelnianie SSH oparte na kluczach

Uwierzytelnianie kluczem SSH jest znacznie bezpieczniejsze niż logowanie oparte na haśle. Wykorzystuje kryptografię asymetryczną — parę kluczy składającą się z klucza prywatnego (przechowywanego w tajemnicy na komputerze klienta) i klucza publicznego (przechowywanego na serwerze). Nawet jeśli atakujący zna Twoją nazwę użytkownika, nie może się zalogować bez klucza prywatnego.

6.1 Wygeneruj parę kluczy SSH na komputerze klienta

Uruchom następujące polecenie na lokalnym komputerze (nie na serwerze):

ssh-keygen -t ed25519 -C "your_email@example.com"

> Dlaczego Ed25519? Ed25519 to nowoczesny algorytm krzywej eliptycznej, który oferuje lepsze bezpieczeństwo i wydajność w porównaniu ze starszym algorytmem RSA. Jeśli Twój system go nie obsługuje, użyj RSA z kluczem 4096-bitowym: ssh-keygen -t rsa -b 4096

Po wyświetleniu monitu wybierz lokalizację zapisu (domyślnie ~/.ssh/id_ed25519) i ustaw silne hasło dla dodatkowej warstwy ochrony.

6.2 Skopiuj klucz publiczny na serwer

Użyj ssh-copy-id, aby bezpiecznie przesłać klucz publiczny na serwer:

ssh-copy-id -p 2222 username@your_server_ip

To polecenie dołącza Twój klucz publiczny do ~/.ssh/authorized_keys na serwerze z odpowiednimi uprawnieniami.

Jeśli ssh-copy-id nie jest dostępne, możesz to zrobić ręcznie:

# On your local machine, display your public key:
cat ~/.ssh/id_ed25519.pub

# On the server, add it to authorized_keys:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "your_public_key_here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

6.3 Przetestuj logowanie oparte na kluczu

Z komputera klienta połącz się z serwerem:

ssh -p 2222 username@your_server_ip

Powinieneś zostać poproszony o podanie hasła klucza (nie hasła konta). Po potwierdzeniu jesteś bezpiecznie zalogowany.

6.4 Wyłącz uwierzytelnianie hasłem

Teraz, gdy uwierzytelnianie oparte na kluczu działa, wróć do /etc/ssh/sshd_config i upewnij się, że:

PasswordAuthentication no

Uruchom ponownie SSH, aby zastosować zmiany:

sudo systemctl restart ssh

Krok 7: Monitoruj i utrzymuj bezpieczeństwo SSH

Instalacja i konfiguracja SSH to nie jednorazowe zadanie. Ciągłe monitorowanie jest niezbędne do wykrywania prób włamania i utrzymania bezpiecznego środowiska.

Sprawdź nieudane próby logowania

sudo journalctl -u ssh | grep "Failed password"

Lub używając lastb do wyświetlenia nieudanych prób logowania:

sudo lastb | head -20

Zainstaluj Fail2Ban, aby blokować ataki brute-force

Fail2Ban monitoruje pliki dziennika i automatycznie blokuje adresy IP wykazujące złośliwe zachowanie (takie jak wielokrotne nieudane próby logowania):

sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Utwórz lokalną konfigurację jail dla SSH:

sudo nano /etc/fail2ban/jail.local

Dodaj następujące wpisy:

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600

Uruchom ponownie Fail2Ban, aby zastosować zmiany:

sudo systemctl restart fail2ban

Aktualizuj OpenSSH

Regularnie aktualizuj OpenSSH, aby łatać znane podatności:

sudo apt update && sudo apt upgrade openssh-server -y

Łączenie z serwerem SSH: Krótki przewodnik

ScenariuszPolecenie
Domyślny port (22)ssh username@your_server_ip
Niestandardowy portssh -p 2222 username@your_server_ip
Określony plik tożsamościssh -i ~/.ssh/id_ed25519 username@your_server_ip
Szczegółowe dane wyjściowe (debugowanie)ssh -v username@your_server_ip
Kopiowanie plików przez SSHscp -P 2222 file.txt username@your_server_ip:/path/

Wybór odpowiedniego środowiska hostingowego dla SSH

Kroki opisane w tym przewodniku dotyczą każdego serwera opartego na Debianie, ale rodzaj używanego hostingu wpływa na sposób dostępu do środowiska i zarządzania nim:

  • VPS Hosting: VPS z cPanel lub innymi Panelami Sterowania VPS zapewnia pełny dostęp SSH roota wraz z graficznym interfejsem zarządzania — idealny dla użytkowników, którzy chcą zarówno mocy, jak i wygody.
  • Serwery Dedykowane: Korzystając z Serwera Dedykowanego, masz pełną kontrolę na poziomie sprzętowym, co sprawia, że konfiguracja SSH jest jeszcze bardziej krytyczna, ponieważ jesteś wyłącznie odpowiedzialny za bezpieczeństwo maszyny.
  • Hosting Współdzielony: Plany Hostingu Współdzielonego zazwyczaj zapewniają ograniczony dostęp SSH lub nie zapewniają go wcale, ponieważ środowisko jest współdzielone przez wielu użytkowników. Jeśli SSH jest wymaganiem, zalecaną ścieżką jest przejście na VPS.

Podsumowanie

Instalacja i konfiguracja serwera SSH na Debianie to podstawowa umiejętność dla każdego administratora systemu lub programisty pracującego ze zdalnymi serwerami Linux. Postępując zgodnie z tym przewodnikiem:

  • ✅ Zainstalowałeś serwer OpenSSH na Debianie
  • ✅ Zabezpieczyłeś konfigurację SSH, zmieniając domyślny port, wyłączając logowanie roota i ograniczając dostęp użytkowników
  • ✅ Skonfigurowałeś uwierzytelnianie SSH oparte na kluczach dla bezpiecznych logowań bez hasła
  • ✅ Skonfigurowałeś reguły zapory sieciowej, aby chronić port SSH
  • ✅ Wdrożyłeś Fail2Ban w celu obrony przed atakami brute-force
  • ✅ Ustanowiłeś rutynę monitorowania i konserwacji

Prawidłowo zabezpieczony serwer SSH znacznie zmniejsza powierzchnię ataku i zapewnia niezawodną, szyfrowaną bramę do zdalnego zarządzania infrastrukturą. Niezależnie od tego, czy dopiero zaczynasz pracę z pierwszym serwerem, czy zabezpieczasz środowisko produkcyjne, te praktyki są niezbędnymi elementami składowymi bezpiecznego systemu Linux.

15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij