Jak skonfigurować serwer SFTP (SSH File Transfer Protocol) w Linux
Linux

Jak skonfigurować serwer SFTP (SSH File Transfer Protocol) w Linux

Jak skonfigurować serwer SFTP (SSH File Transfer Protocol) w Linux

Serwer SFTP to bezpieczny sposób przesyłania plików między komputerami. W przeciwieństwie do klasycznego FTP, który przesyła dane w formie otwartego tekstu, SFTP korzysta z szyfrowanego połączenia SSH, zapewniając poufność i integralność danych. Co więcej, SFTP nie wymaga instalacji oddzielnego serwera FTP – działa natywnie w oparciu o SSH.

W tym artykule omówimy:
Czym jest SFTP i dlaczego warto go używać?
Instalację i konfigurację serwera SFTP na Ubuntu/Debian
Autentykację za pomocą kluczy SSH
Konfigurację użytkowników z ograniczonym dostępem
Bezpieczeństwo i najlepsze praktyki


1. Co to jest SFTP i dlaczego warto go używać?

SFTP (SSH File Transfer Protocol) to rozszerzenie protokołu SSH, które umożliwia bezpieczny transfer plików. W przeciwieństwie do tradycyjnego FTP, który wymaga dodatkowych zabezpieczeń (np. FTPS), SFTP domyślnie szyfruje całą komunikację.

🔹 Główne zalety SFTP:
Bezpieczeństwo – wszystkie dane, w tym hasła i pliki, są szyfrowane.
Łatwa konfiguracja – działa natywnie z SSH, bez potrzeby instalacji dodatkowego oprogramowania.
Obsługa kluczy SSH – umożliwia logowanie bez hasła, zwiększając bezpieczeństwo.
Dostępność – działa na wszystkich systemach Linux i Unix, a także na Windows (przez OpenSSH).

Czytaj  Wydanie nowych wersji dystrybucji Linux
Jak skonfigurować serwer SFTP (SSH File Transfer Protocol) w Linux
Jak skonfigurować serwer SFTP (SSH File Transfer Protocol) w Linux

2. Instalacja i konfiguracja serwera SFTP na Ubuntu/Debian

Krok 1: Sprawdzenie, czy SSH jest zainstalowane

Większość systemów Linux domyślnie zawiera serwer SSH. Możesz to sprawdzić poleceniem:

sudo systemctl status ssh

Jeśli usługa nie jest zainstalowana, zainstaluj OpenSSH:

sudo apt update
sudo apt install openssh-server -y

Uruchom i włącz serwer SSH:

sudo systemctl enable ssh
sudo systemctl start ssh

Krok 2: Tworzenie użytkownika do obsługi SFTP

Aby zapewnić bezpieczeństwo, najlepiej utworzyć specjalnego użytkownika przeznaczonego do transferu plików:

sudo adduser sftpuser

Podaj hasło i potwierdź dane użytkownika.


Krok 3: Ograniczenie użytkownika SFTP do określonego katalogu

Aby użytkownik sftpuser miał dostęp wyłącznie do katalogu /home/sftpuser, edytuj plik konfiguracyjny SSH:

sudo nano /etc/ssh/sshd_config

Dodaj poniższą sekcję na końcu pliku:

Match User sftpuser
    ForceCommand internal-sftp
    ChrootDirectory /home/sftpuser
    X11Forwarding no
    AllowTcpForwarding no
    PermitTunnel no

Zapisz plik (Ctrl + X, Y, Enter) i uruchom ponownie usługę SSH:

sudo systemctl restart ssh

Teraz użytkownik sftpuser nie może korzystać z normalnego dostępu SSH – może jedynie przesyłać pliki przez SFTP.


3. Logowanie i autentykacja za pomocą kluczy SSH

Dla większego bezpieczeństwa zaleca się używanie kluczy SSH zamiast haseł.

Krok 1: Generowanie klucza SSH

Na komputerze klienta wykonaj:

ssh-keygen -t rsa -b 4096

Wprowadź ścieżkę zapisu klucza (lub naciśnij Enter, aby użyć domyślnej lokalizacji ~/.ssh/id_rsa).

Krok 2: Przesłanie klucza na serwer

Jeśli masz dostęp SSH do serwera, użyj:

ssh-copy-id sftpuser@adres_IP

Jeśli nie masz ssh-copy-id, ręcznie skopiuj zawartość pliku id_rsa.pub do:

/home/sftpuser/.ssh/authorized_keys

Następnie ustaw odpowiednie uprawnienia:

sudo chown -R sftpuser:sftpuser /home/sftpuser/.ssh
sudo chmod 700 /home/sftpuser/.ssh
sudo chmod 600 /home/sftpuser/.ssh/authorized_keys

Teraz użytkownik może logować się bez użycia hasła:

sftp sftpuser@adres_IP

4. Konfiguracja użytkowników z ograniczonym dostępem

Jeśli chcesz dodać więcej użytkowników z ograniczeniami, utwórz nową grupę:

sudo groupadd sftpgroup

Dodaj użytkownika do grupy:

sudo usermod -aG sftpgroup sftpuser

Zmień konfigurację SSH (/etc/ssh/sshd_config):

Match Group sftpgroup
    ForceCommand internal-sftp
    ChrootDirectory /home/%u
    X11Forwarding no
    AllowTcpForwarding no

Zapisz i restartuj SSH:

sudo systemctl restart ssh

Teraz każdy użytkownik w grupie sftpgroup może korzystać z SFTP, ale nie ma dostępu do innych części systemu.

Czytaj  Do czego służy ext4?

5. Najlepsze praktyki bezpieczeństwa

🔹 Wyłącz logowanie hasłem i używaj tylko kluczy SSH
Edytuj /etc/ssh/sshd_config i zmień:

PasswordAuthentication no

🔹 Zmień domyślny port SSH (opcjonalnie)

Port 2222

🔹 Ustawienie limitów transferu
Możesz ograniczyć prędkość transferu dla użytkowników SFTP w /etc/ssh/sshd_config:

Match User sftpuser
    ForceCommand internal-sftp
    ChrootDirectory /home/sftpuser
    AllowTcpForwarding no
    PermitTunnel no
    X11Forwarding no
    AllowTcpForwarding no
    RateLimit 100K

🔹 Monitorowanie logów
Sprawdzaj logi SFTP:

sudo journalctl -u ssh
sudo tail -f /var/log/auth.log

6. Podsumowanie

SFTP to bezpieczna alternatywa dla klasycznego FTP – wszystkie dane są szyfrowane.
Nie wymaga instalacji dodatkowego serwera FTP – działa natywnie z SSH.
Obsługuje autentykację kluczami SSH – zwiększa bezpieczeństwo i eliminuje potrzebę używania haseł.
Można ograniczyć dostęp użytkowników – za pomocą ChrootDirectory.

SFTP to idealne rozwiązanie dla administratorów i firm, które chcą zapewnić bezpieczny i wygodny transfer plików w swoich systemach.

Polecane wpisy
Bezpieczeństwo w Ubuntu: Jak chronić swój system przed zagrożeniami
Bezpieczeństwo w Ubuntu: Jak chronić swój system przed zagrożeniami

Bezpieczeństwo w Ubuntu: Jak chronić swój system przed zagrożeniami Ubuntu jest jedną z najbezpieczniejszych dystrybucji Linuksa, ale jak każdy system Czytaj dalej

Luka bezpieczeństwa w powłoce systemowej Bash

W powłoce systemowej Bash wykryto krytyczną lukę bezpieczeństwa pozwalającą atakującemu na zdalne wykonanie kodu, co może doprowadzić do przejęcia kontroli 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.