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  Zaawansowane Skrypty Bash: Programowanie Funkcyjne i Warunki Logiczne
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  Windows 11 i Linux na jednym dysku: Poradnik instalacji

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
Zaktualizuj oprogramowanie Linux
Zaktualizuj oprogramowanie Linux

Zaktualizuj oprogramowanie Linux Aktualizacje oprogramowania są ważne dla wszystkich systemów operacyjnych, w tym dla systemów Linux. Aktualizacje często zawierają poprawki Czytaj dalej

Jak działa cgroups w Linux i jak ograniczyć zużycie CPU/RAM przez procesy
Jak działa cgroups w Linux i jak ograniczyć zużycie CPU/RAM przez procesy

Jak działa cgroups w Linux i jak ograniczyć zużycie CPU/RAM przez procesy Mechanizm cgroups (control groups) w systemie Linux to 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.