Gdy klient FTP łączy się z serwerem, ale nie pokazuje katalogów albo zatrzymuje transfer, problem często nie leży w haśle, tylko w źle ustawionych portach. Wyjaśniam, który port obsługuje FTP, czym różnią się tryb aktywny i pasywny, jak skonfigurować zaporę oraz kiedy lepiej wybrać FTPS lub SFTP.
Najważniejsze ustawienia portów FTP w jednym miejscu
- TCP 21 obsługuje kanał sterujący, czyli logowanie i komendy.
- TCP 20 służy do danych głównie w klasycznym trybie aktywnym.
- Tryb pasywny wymaga otwarcia ustalonego zakresu portów na serwerze.
- Do zwykłego połączenia z Internetu najczęściej wybieram tryb pasywny.
- Czysty FTP przesyła dane bez szyfrowania, dlatego bezpieczniejszym wyborem jest SFTP albo FTPS.

Który port wykorzystuje FTP i za co odpowiada
Standardowy port FTP to TCP 21. To kanał sterujący, przez który klient wysyła polecenia, serwer potwierdza logowanie i przekazuje informacje o operacjach na plikach. Sam transfer pliku odbywa się jednak osobnym połączeniem, dlatego otwarcie wyłącznie portu 21 nie zawsze wystarcza.
| Port lub zakres | Rola | Kiedy jest używany |
|---|---|---|
| 21/TCP | Kanał sterujący | Zawsze przy klasycznym FTP i jawnym FTPS |
| 20/TCP | Kanał danych | Typowo w trybie aktywnym |
| Zakres portów TCP | Kanał danych | Najczęściej w trybie pasywnym |
| 990/TCP | Kanał sterujący implicit FTPS | W starszym lub konkretnie skonfigurowanym wariancie szyfrowanego FTP |
Największe nieporozumienie polega na tym, że port 20 nie jest uniwersalnym „portem do przesyłania plików”. W trybie pasywnym serwer wybiera port z ustalonej puli, na przykład 50000-50100, i właśnie ten zakres musi być dostępny w zaporze.
Tryb aktywny i pasywny zmieniają reguły zapory
Tryb aktywny
Klient najpierw łączy się z serwerem na port 21, a później przekazuje mu adres i port, pod którym oczekuje połączenia danych. Serwer inicjuje drugie połączenie do klienta, zwykle wykorzystując port 20 po swojej stronie.
Na papierze wygląda to prosto, ale w praktyce tryb aktywny często przegrywa z routerami, NAT-em i zaporami na komputerach użytkowników. Serwer próbuje połączyć się „z powrotem” do urządzenia znajdującego się za prywatnym adresem IP, więc transfer lub lista katalogów może się nie uruchomić.
Przeczytaj również: SNMP w praktyce - Jak wdrożyć skuteczny monitoring sieci?
Tryb pasywny
W trybie pasywnym oba połączenia inicjuje klient. Serwer odpowiada na porcie 21, a następnie informuje klienta, z którym portem danych powinien się połączyć. To rozwiązanie lepiej pasuje do współczesnych sieci i dlatego właśnie je zwykle ustawiam.
Trzeba jednak pamiętać o dodatkowej konfiguracji. Oprócz TCP 21 należy dopuścić wybrany zakres portów pasywnych, a serwer musi przekazywać klientowi prawidłowy publiczny adres IP. Zły adres w odpowiedzi PASV daje typowy efekt: logowanie działa, lecz pobieranie katalogu kończy się błędem.
Jak otworzyć porty FTP na serwerze i routerze
Najbezpieczniejsza konfiguracja nie polega na odblokowaniu całego zakresu portów od 1024 do 65535. Ustalam małą, kontrolowaną pulę, na przykład 50000-50100. Sto portów zwykle wystarcza dla niewielkiego serwera, choć przy dużej liczbie równoczesnych transferów zakres trzeba dobrać do obciążenia.
- W ustawieniach serwera włącz tryb pasywny.
- Ustaw konkretny zakres, na przykład 50000-50100/TCP.
- Jeśli serwer stoi za NAT-em, wpisz jego publiczny adres IP albo skonfiguruj poprawne wykrywanie adresu.
- W zaporze serwera zezwól na TCP 21 oraz wybrany zakres portów pasywnych.
- Na routerze przekieruj te same porty do prywatnego adresu serwera.
- W kliencie FTP wybierz tryb pasywny i sprawdź połączenie z zewnętrznej sieci.
Przykładowe reguły dla zapory UFW mogą wyglądać tak:
sudo ufw allow 21/tcpsudo ufw allow 50000:50100/tcp
To tylko przykład składni, a nie gotowa recepta dla każdego systemu. W panelu serwera FTP zakres musi być identyczny z zakresem otwartym na firewallu i routerze. Jeśli choć jeden z tych elementów wskazuje inną pulę, połączenie będzie losowo przerywane albo całkowicie zablokowane.
FTP, FTPS i SFTP korzystają z innych portów
Podobne nazwy często prowadzą do błędnej konfiguracji. FTP i FTPS są oparte na tym samym mechanizmie kanału sterującego i danych, natomiast SFTP działa jako usługa SSH, więc nie korzysta z klasycznych portów FTP.
| Protokół | Domyślny port | Szyfrowanie | Najważniejsza uwaga |
|---|---|---|---|
| FTP | 21/TCP, a w aktywnym trybie także 20/TCP | Nie | Hasła i pliki mogą być przechwycone |
| FTPS explicit | 21/TCP | Tak, po negocjacji TLS | Wymaga poprawnej obsługi certyfikatu i zakresu portów danych |
| FTPS implicit | 990/TCP | Tak od początku połączenia | Nie każdy klient i serwer używa tego wariantu |
| SFTP | 22/TCP | Tak, przez SSH | Transfer odbywa się jednym kanałem |
Jeśli mam wpływ na nowe wdrożenie, wybieram SFTP na porcie 22, bo upraszcza reguły sieciowe i od razu szyfruje połączenie. FTPS ma sens wtedy, gdy firma musi zachować kompatybilność z istniejącą infrastrukturą FTP albo konkretnym systemem wymiany plików.
Co sprawdzić, gdy logowanie działa, ale transfer nie
Objaw błędu często podpowiada, którego elementu brakuje. Sama informacja „FTP nie działa” jest zbyt ogólna, dlatego zaczynam od logów klienta i rozdzielam kanał sterujący od kanału danych.
| Objaw | Najbardziej prawdopodobna przyczyna | Co sprawdzić |
|---|---|---|
| Brak połączenia z serwerem | Zamknięty port 21, niedziałająca usługa lub zły adres | Firewall, NAT, nasłuchiwanie na TCP 21 |
| Logowanie działa, ale nie ma listy katalogów | Nie działa tryb pasywny albo zakres danych jest zablokowany | Porty pasywne, publiczny adres IP, reguły routera |
| Błąd 425 lub timeout przy pobieraniu | Klient nie może utworzyć połączenia danych | Zakres portów i zgodność ustawień klienta z serwerem |
| Połączenie szyfrowane nie startuje | Niezgodny tryb FTPS lub problem z certyfikatem | Explicit versus implicit, port 21 versus 990 |
| Transfer urywa się po kilku sekundach | Filtrowanie ruchu, limit czasu lub niestabilny NAT | Logi zapory, timeouty i reguły inspekcji FTP |
Do szybkiego testu portu 21 można użyć w systemie Windows polecenia Test-NetConnection adres-serwera -Port 21, a w Linuksie lub macOS narzędzia nc -vz adres-serwera 21. Taki test potwierdza tylko dostęp do kanału sterującego, więc nie zastępuje próby listowania katalogu w trybie pasywnym.
Nie otwieram portu 20 „na wszelki wypadek”, gdy korzystam z pasywnego FTP. W takim układzie ważniejsza jest konkretna pula portów danych ustawiona w konfiguracji serwera.
Jak ograniczyć ryzyko związane z FTP
Klasyczny FTP nie szyfruje loginu, hasła ani przesyłanych plików. Port 21 może być poprawnie otwarty, a mimo to cała komunikacja pozostaje podatna na podsłuch w niezaufanej sieci. Do publicznie dostępnego serwera nie traktuję więc zwykłego FTP jako rozsądnego wyboru.
- Wyłącz logowanie anonimowe, jeśli nie jest absolutnie potrzebne.
- Ogranicz dostęp do konkretnych katalogów i adresów IP.
- Stosuj osobne konta, silne hasła oraz uprawnienia tylko do odczytu tam, gdzie to możliwe.
- Włącz FTPS lub przejdź na SFTP.
- Monitoruj logowania i blokuj powtarzające się próby zgadywania haseł.
- Regularnie aktualizuj serwer FTP, system i komponenty odpowiedzialne za TLS.
Najczęściej większą różnicę niż zmiana numeru portu robi szyfrowanie, ograniczenie dostępu i aktualne oprogramowanie. Przeniesienie usługi z portu 21 na inny numer może ograniczyć część automatycznych skanów, ale nie zastępuje zabezpieczeń.
Prosty zestaw ustawień dla typowego serwera
Dla większości małych wdrożeń przyjąłbym następujący wariant: SFTP na TCP 22, jeśli aplikacje na to pozwalają. Gdy wymagany jest klasyczny FTP, ustawiłbym tryb pasywny, TCP 21 oraz ograniczony zakres, na przykład 50000-50100, a potem sprawdził transfer spoza lokalnej sieci.
Najważniejsza zasada jest prosta: port 21 otwiera rozmowę z serwerem, ale o powodzeniu przesyłania plików decyduje także kanał danych. Jeśli logowanie działa, a katalogi się nie wyświetlają, w pierwszej kolejności sprawdź tryb pasywny, zakres portów i adres przekazywany przez serwer.