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  Serwer FTP z wirtualnymi użytkownikami (vsftpd) – konfiguracja i bezpieczeństwo
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  Jak skonfigurować serwer pocztowy SMTP z Postfix na Ubuntu

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
Dirty COW (CVE-2016-5195) Linux Exploit
Dirty COW (CVE-2016-5195) Linux Exploit

Dirty COW, inaczej Copy-On-Write (COW), jest exploit-em odkrytym w październiku 2016 roku. Exploit ten umożliwia atakującemu podniesienie uprawnień do poziomu Czytaj dalej

Jak skonfigurować serwer pocztowy POP3 / IMAP za pomocą Dovecot na Ubuntu
Jak skonfigurować serwer pocztowy POP3 / IMAP za pomocą Dovecot na Ubuntu

Jak skonfigurować serwer pocztowy POP3 / IMAP za pomocą Dovecot na Ubuntu? Dovecot to popularny serwer pocztowy typu open-source, który Czytaj dalej