Protokół FTP i SFTP: czym są i jak wysyłać pliki na serwer

Mateusz Bogolubow

Mateusz Bogolubow

12-11-2026

Czym jest protokół FTP, czy nadal się go używa i czym różni się od FTPS i SFTP. Jak wysyłać pliki na serwer i dlaczego warto je najpierw spakować.

Protokół FTP i SFTP: czym są i jak wysyłać pliki na serwer
FTP (*File Transfer Protocol*) to jeden z najstarszych protokołów do przesyłania plików między komputerem a serwerem, ale nie szyfruje ruchu: hasła i dane lecą jawnym tekstem. Dziś zamiast niego używa się SFTP, który działa przez SSH i jest bezpieczny. Niezależnie od protokołu spakuj pliki w jedno archiwum, wyślij je i rozpakuj na serwerze, bo wysyłanie tysięcy małych plików osobno bywa bardzo wolne.

Wysłanie plików na serwer wydaje się prostą sprawą, a okazuje się, że nazw jest kilka: FTP, FTPS, SFTP. Ten artykuł wyjaśnia, czym jest FTP, czy ktoś jeszcze z niego korzysta, czym różni się od SFTP i jak wysyłać pliki tak, żeby nie czekać godzinami. Jeśli nie masz jeszcze dostępu do serwera, zacznij od artykułu o SSH i kluczach, bo SFTP opiera się właśnie na SSH. O samym serwerze przeczytasz w tekście o serwerze VPS.

Czym jest protokół FTP?

FTP (File Transfer Protocol) to standardowy protokół przesyłania plików w modelu klient–serwer: Twój program (klient) łączy się z serwerem i wysyła lub pobiera pliki. Według opisu w Wikipedii obecna specyfikacja to RFC 959 z października 1985 roku, a pierwsza wersja (RFC 114) pochodzi z 1971 roku. To jeden z najstarszych protokołów internetowych, który powstał, zanim ktokolwiek myślał o szyfrowaniu ruchu.

Jak działa FTP? Połączenie kontrolne, dane i tryb pasywny

FTP używa dwóch osobnych połączeń: kontrolnego, którym wysyłasz polecenia (według infoboksu na porcie 21), oraz danych, którym przesyłane są pliki (port 20). Sposób ich nawiązania zależy od trybu:

TrybKto łączy się z kimKiedy się przydaje
Aktywnyklient nasłuchuje i wysyła polecenie PORT, a serwer łączy się z klientem ze swojego portu 20gdy klient jest dostępny z zewnątrz
Pasywnyklient wysyła polecenie PASV i sam nawiązuje połączenie danych z serweremgdy klient jest za zaporą sieciową

Ponieważ dwa połączenia i dodatkowe porty komplikują konfigurację zapory, FTP bywa kłopotliwy w sieciach z firewallem. Jeśli klient nie może pobrać listy plików po zalogowaniu, jedną z pierwszych rzeczy do sprawdzenia jest tryb (zwykle pasywny).

Dlaczego zwykły FTP nie jest bezpieczny?

Wikipedia podaje to wprost: FTP nie szyfruje ruchu. Nazwy użytkowników, hasła, polecenia i dane są przesyłane jawnym tekstem, więc każdy, kto przechwytuje ruch w sieci, może je odczytać. Dlatego do niczego poza testami w zamkniętej sieci zwykłego FTP nie używa się dziś na serwerach, na których coś zależy.

FTP, FTPS i SFTP: czym się różnią?

Nazwy są podobne, a protokoły różne:

FTPFTPSSFTP
Co to jestpodstawowy protokół (RFC 959)FTP z dodanym szyfrowaniem TLS (RFC 4217)inny protokół, działający przez SSH
Szyfrowaniebraktak (klient prosi o nie poleceniem AUTH TLS)tak, przez SSH
Porty21 (sterowanie) i danejak FTPjeden port, domyślnie 22
Logowanielogin i hasłologin i hasłohasło lub klucze SSH
Zgodnośćpunkt odniesieniarozszerza FTPniezgodny z FTP

Najczęstszy błąd w nazewnictwie: SFTP to nie „FTP przez SSH”. Według opisu w Wikipedii to nowy protokół zaprojektowany od podstaw przez grupę IETF, który działa zwykle jako podsystem SSH i dzieli z nim port 22. Nigdy nie stał się oficjalnym standardem, a mimo to jest powszechnie obsługiwany. Skoro i tak łączysz się z serwerem przez SSH, SFTP nie wymaga osobnej usługi.

Uwaga mentora: jeśli możesz, zamiast zwykłego FTP używaj SFTP z kluczami SSH. Skoro i tak masz dostęp przez SSH, nie musisz stawiać osobnego serwera plików.

Czy FTP jest obecnie często wykorzystywany?

Nie znalazłem wiarygodnych danych o skali użycia FTP, więc nie podaję liczb. Wiadomo natomiast, że:

  • Przeglądarki wycofały obsługę FTP. Według Wikipedii Chrome usunął ją w wersji 88 (to samo dotyczy przeglądarek opartych na Chromium, np. Edge), Firefox wyłączył ją domyślnie w wersji 88 i usunął w 90 (2021).
  • LibreOffice usunął FTP w wersji 24.2.
  • Polecenia FTP nadal są w konsoli większości systemów Windows i Unix-like, a popularne klienty graficzne, takie jak FileZilla i WinSCP, wciąż działają.
  • W nowoczesnych projektach wdrożenia coraz częściej idą przez Git i CI/CD albo przez SSH. To obserwacja, a nie statystyka.

Wniosek ostrożny: FTP nie zniknął, ale poza starymi systemami i niektórymi hostingami jest wypierany przez SFTP i inne metody. Jeśli masz wybór, wybierz SFTP.

Jak wysłać pliki na serwer przez SFTP?

Program sftp jest dołączony do OpenSSH. Według jego podręcznika wykonuje on wszystkie operacje przez szyfrowany transport SSH. Łączysz się tak samo jak przez SSH:

sftp ania@203.0.113.10

Po połączeniu pracujesz w interaktywnej sesji. Według podręcznika najważniejsze polecenia to:

PolecenieCo robi
put plikwysyła plik na serwer
get plikpobiera plik z serwera
lspokazuje zawartość zdalnego katalogu
cd katalogzmienia zdalny katalog
mkdir katalogtworzy zdalny katalog
rm plikusuwa zdalny plik

Użyteczne opcje: -P port wskazuje port serwera, a -r kopiuje katalogi rekurencyjnie. Adres można też podać jako URI: sftp://ania@203.0.113.10/sciezka. Jeśli masz skonfigurowane klucze SSH, nie musisz wpisywać hasła. Opisuje to artykuł o SSH i kluczach. Tego polecenia nie uruchamiałem na prawdziwym serwerze, więc opieram się na podręczniku.

Dlaczego warto spakować pliki przed wysłaniem na serwer?

Najczęstszy powód, dla którego wysyłanie projektu na serwer trwa w nieskończoność, nie leży w łączu, tylko w liczbie plików. Przy wysyłaniu katalogu z tysiącami małych plików klient musi dla każdego osobno otworzyć plik, przesłać go i zamknąć, a więc wymienić z serwerem dodatkowe komunikaty. Przy małych plikach te narzuty potrafią zająć więcej czasu niż samo przesyłanie danych. Jedno archiwum to jeden transfer.

Dobra praktyka wygląda więc tak:

  1. Spakuj katalog do jednego archiwum na swoim komputerze.
  2. Wyślij archiwum (jeden plik).
  3. Rozpakuj je na serwerze.
# 1. lokalnie: spakuj katalog projekt/ do jednego pliku
tar -czf projekt.tar.gz projekt

# 2. wyślij jeden plik na serwer
sftp ania@203.0.113.10
sftp> put projekt.tar.gz

# 3. na serwerze (po zalogowaniu przez ssh): rozpakuj
tar -xzf projekt.tar.gz

Sprawdziłem lokalnie na macOS, jak to wygląda dla syntetycznych danych: 2000 małych plików tekstowych w 20 katalogach spakowałem poleceniem tar -czf do jednego archiwum o rozmiarze około 46 KB, po rozpakowaniu wróciło 2000 plików, a diff -r pokazał identyczną zawartość. Ten sam zestaw spakowany zip dał archiwum około 432 KB, czyli wielokrotnie większe. To były powtarzalne dane testowe, więc nie traktuj liczb jako reguły dla swojego projektu, a czasu wysyłania przez sieć nie mierzyłem. Wniosek, który zostaje: jedno archiwum to jeden transfer, a kompresja dodatkowo zmniejsza rozmiar.

Dwie uwagi praktyczne: nie pakuj do archiwum katalogów, których nie musisz wysyłać (np. node_modules albo .git), i po rozpakowaniu sprawdź uprawnienia plików na serwerze. Uprawnienia opisuje artykuł o chmod w Linuksie.

Jakich klientów FTP i SFTP używać?

KlientSystemUwagi
Polecenie sftpmacOS, Linux, Windows (z OpenSSH)wbudowane, praca w terminalu
FileZillaWindows, macOS, Linuxpopularny klient graficzny (FTP, FTPS i SFTP)
WinSCPWindowspopularny klient graficzny
Dolphin, KonquerorLinux (KDE)obsługują FTP i SFTP bezpośrednio w menedżerze plików
Eksplorator WindowsWindowsobsługuje FTP tylko do małych transferów i nie obsługuje SFTP

Informacje o klientach pochodzą z Wikipedii, a ich szczegółowej dokumentacji nie sprawdzałem. Do pracy z serwerem przez SSH wystarczy sftp w terminalu, a klient graficzny przydaje się wtedy, gdy wolisz przeciągać pliki myszą. Pracę w terminalu opisuje artykuł o terminalu i wierszu poleceń.

Jakie błędy zdarzają się przy FTP i SFTP?

ProblemCo zwykle znaczyCo zrobić
Połączenie odrzucone lub brak odpowiedzizły port, usługa nie działa albo zapora blokujeSFTP używa portu SSH (22), a nie 21; sprawdź adres, port i zaporę
Logowanie działa, ale lista plików się nie ładuje (FTP)problem z drugim połączeniem (dane) za zaporąspróbuj trybu pasywnego
Permission deniedbrak uprawnień do katalogu lub zły użytkowniksprawdź użytkownika i uprawnienia katalogu
Pomylenie SFTP z FTPklient FTP nie połączy się z serwerem SFTP i odwrotniewybierz w kliencie właściwy protokół, bo to różne protokoły
Pliki binarne uszkodzone po transferze (zwykły FTP)wybrany tryb tekstowy zamiast binarnego (z wiedzy ogólnej, nie testowałem)używaj trybu binarnego dla archiwów i obrazów
Bardzo wolny transfertysiące małych plikówspakuj pliki w archiwum

Przy Permission denied na SFTP zwykle działają te same zasady co w SSH: sprawdź użytkownika i klucze. Opisują je w artykule o SSH i najczęstszych błędach.

Co wybrać dziś do wysyłania plików na serwer i wdrażania aplikacji?

SytuacjaCo wybrać
Masz dostęp do serwera przez SSHSFTP z kluczami SSH
Hosting daje tylko FTPFTPS, jeśli dostępny; zwykły FTP w ostateczności
Wysyłasz cały projekt jednorazowojedno archiwum, a potem rozpakowanie na serwerze
Wysyłasz zmiany często i chcesz przesyłać tylko to, co się zmieniłorsync przez SSH (z wiedzy ogólnej, nie testowałem)
Wdrażasz aplikację regularnie i pracujesz w zespolerepozytorium Git na serwerze albo CI/CD, czyli ciągła integracja i dostarczanie
Nie masz serwerazwykły hosting z panelem lub chmura

Kolejność, w jakiej zwykle dojrzewa sposób wdrażania, wygląda tak: ręczne wysyłanie plików przez SFTP, potem skrypt, a na końcu zautomatyzowany proces, który po każdej zmianie w repozytorium sam buduje, testuje i wdraża aplikację. Taki proces nazywa się CI/CD i unika błędów typu „zapomniałem wysłać jeden plik”. Opisujemy go w osobnym artykule o CI/CD w praktyce, a cały proces wdrożenia pokazujemy w module wdrożenie produkcyjne w chmurze w kursie AI Engineer.

Podsumowanie

  • FTP to stary protokół przesyłania plików (RFC 959 z 1985), który nie szyfruje ruchu, więc hasła i dane lecą jawnym tekstem.
  • FTPS to FTP z TLS, a SFTP to zupełnie inny protokół, który działa przez SSH na porcie 22 i jest niezgodny z FTP.
  • Przeglądarki wycofały FTP w 2021 roku. Nie mam danych o skali jego użycia, ale na nowych serwerach wybierz SFTP.
  • Spakuj pliki, wyślij archiwum i rozpakuj na serwerze, bo wysyłanie tysięcy małych plików osobno bywa bardzo wolne.
  • Polecenia tar sprawdziłem lokalnie na danych testowych, a sftp opisałem według podręcznika, bez testu na prawdziwym serwerze.

Masz pytanie do artykułu? Chcesz zgłosić błąd?

Pytaj ogólnie o temat artykułu albo napisz, co poprawić. Jeśli chcesz omówić swój konkretny przypadek, umów się na rozmowę lub . Ze względów bezpieczeństwa nie przeglądamy ani nie publikujemy żadnych linków. Wiadomości z linkami nie są zapisywane. Limit: 2 pytania na godzinę.

Wyślemy na niego link do potwierdzenia pytania i odpowiedź.

Ostateczną decyzję o opublikowaniu pytania podejmuje administrator.

Konsultacja i warsztaty devmentor.pl

Masz pytania?

Partnerzy

Firmy, z którymi współpracujemy

To partnerzy odpowiedzialni za staże po naszych kursach. Organizują je dla najlepszych absolwentów.

Zobacz wszystkich partnerów →
  • VR Medical
  • Sophona
  • Robot Force