Komunikat Błąd podczas wykonywania programu (kod błędu 29) w programie Total Commander pojawia się w momencie, gdy klient próbuje nawiązać połączenie transmisji danych w trybie aktywnym (polecenie PORT), a router z translacją adresów NAT lub zapora sieciowa blokuje przychodzący pakiet z serwera. Choć błąd ten towarzyszy administratorom od dekad, jego techniczna przyczyna jest bardzo precyzyjna i bezpośrednio związana z architekturą protokołu FTP.
Poniżej omawiamy architekturę błędu 29, procedurę szybkiej naprawy w Total Commanderze, konfigurację zapory oraz niezbędną migrację na bezpieczny protokół SFTP z kluczami SSH.
Dlaczego Total Commander zgłasza błąd 29: tryb aktywny (PORT) vs pasywny (PASV)
Klasyczny protokół FTP (RFC 959) wykorzystuje dwa oddzielne kanały komunikacyjne:
- Kanał kontrolny (Control Connection): Zwykle na porcie 21 serwera, służący do przesyłania poleceń (USER, PASS, LIST, RETR, STOR) i odbierania kodów odpowiedzi.
- Kanał danych (Data Connection): Odrębne połączenie TCP, przez które przesyłany jest listing katalogów oraz sama zawartość plików.
Różnica między trybem aktywnym a pasywnym decyduje o tym, która strona inicjuje połączenie dla kanału danych:
TRYB AKTYWNY (PORT) - Podatny na błąd 29:
Klient:21 ---> Serwer:21 [Kanał poleceń]
Klient <--- Serwer:20 [Kanał danych: Serwer łączy się z portem Klienta]
^ Router NAT / Firewall blokuje pakiet przychodzący!
TRYB PASYWNY (PASV) - Prawidłowe rozwiązanie:
Klient:21 ---> Serwer:21 [Kanał poleceń]
Klient ---> Serwer:50234 [Kanał danych: Klient łączy się z portem Serwera]
^ Dozwolony ruch wychodzący przez NAT!Mechanizm powstania błędu 29
Gdy w Total Commanderze wyłączony jest tryb pasywny, program działa w trybie aktywnym. Po uwierzytelnieniu klient wysyła do serwera polecenie PORT h1,h2,h3,h4,p1,p2, podając swój lokalny adres IP oraz losowy port, na którym nasłuchuje na dane z serwera.
W nowoczesnych sieciach domowych i biurowych komputer znajduje się za routerem NAT. Klient podaje serwerowi swój prywatny adres IP (np. 192.168.1.50), do którego serwer internetowy nie ma bezpośredniego dostępu. Nawet jeśli router obsługuje algorytm FTP ALG (Application Layer Gateway) i podmieni adres na publiczny, lokalny firewall w systemie Windows lub filtr stanowy routera odrzuci niesprowokowane połączenie przychodzące z portu 20 serwera. Po przekroczeniu limitu czasu (timeout) Total Commander zwraca błąd 29 (Winsock connection failed lub brak odpowiedzi na gniazdku danych).
Krok po kroku: jak naprawić błąd 29 w Total Commanderze
Rozwiązaniem problemu w 95% przypadków jest wymuszenie trybu pasywnego dla danego profilu połączenia.
Krok 1: Włączenie trybu pasywnego (PASV)
- Uruchom Total Commander i naciśnij skrót Ctrl+F (lub wybierz z menu głównego: Sieć -> FTP Połączenie).
- Na liście zdefiniowanych połączeń wskaż serwer sprawiający problemy i kliknij przycisk Edytuj.
- W oknie konfiguracji odszukaj pole wyboru: Użyj trybu pasywnego do transferu (jak przeglądarka WWW) (ang. Use passive mode for transfers).
- Zaznacz tę opcję.
- Kliknij OK, a następnie połącz się ponownie z serwerem.
W trybie pasywnym klient wysyła do serwera polecenie PASV. W odpowiedzi serwer otwiera losowy port ze zdefiniowanej puli portów pasywnych i odsyła jego numer. Następnie Total Commander sam wykonuje połączenie wychodzące na ten port. Ponieważ ruch wychodzący jest standardowo przepuszczany przez routery i zapory stanowe, transfer danych dochodzi do skutku bez przeszkód.
Krok 2: Sprawdzenie zapory sieciowej Windows Defender
Jeśli błąd występuje nadal pomimo włączenia trybu pasywnego, zapora systemowa może blokować sam proces Total Commandera:
- Otwórz Panel sterowania -> System i zabezpieczenia -> Zapora Windows Defender.
- Wybierz Zezwalaj aplikacji lub funkcji na dostęp przez Zaporę Windows Defender.
- Sprawdź, czy na liście znajduje się plik
TOTALCMD.EXE(lubTOTALCMD64.EXE). - Upewnij się, że zaznaczone są flagi dla sieci Prywatnej oraz Publicznej.
- Jeśli programu nie ma na liście, kliknij Zezwalaj na dostęp innej aplikacji i wskaż ścieżkę instalacyjną Total Commandera (domyślnie
C:\totalcmd\totalcmd64.exe).
Krok 3: Konfiguracja serwera (dla administratorów VPS i dedyków)
Jeżeli zarządzasz własnym serwerem FTP (np. vsftpd lub ProFTPD pod Linuksem) i żaden klient nie może połączyć się w trybie PASV, problem leży w konfiguracji puli portów pasywnych na serwerze.
W pliku /etc/vsftpd.conf upewnij się, że zdefiniowano zakres portów oraz zewnętrzny adres IP:
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50100
pasv_address=TWÓJ_PUBLICZNY_IP_SERWERANastępnie otwórz ten zakres w zaporze sieciowej serwera (np. UFW):
sudo ufw allow 21/tcp
sudo ufw allow 50000:50100/tcp
sudo systemctl restart vsftpdDlaczego klasyczny FTP to krytyczne ryzyko bezpieczeństwa
Naprawa błędu 29 pozwala odzyskać łączność, ale pozostawanie przy protokole FTP stwarza poważne zagrożenia dla integralności serwisów internetowych.
ZAGROŻENIA NIESZYFROWANEGO PROTOKOŁU FTP:
+-------------------------------------------------------------------+
| 1. Transmisja poświadczeń w plaintext (port 21) |
| - Login i hasło widoczne dla każdego węzła pośredniczącego |
+-------------------------------------------------------------------+
| 2. Podatność pliku wcx_ftp.ini na infostealery |
| - Słabe szyfrowanie lokalne Total Commandera |
+-------------------------------------------------------------------+
| 3. Brak atomowości transferu plików |
| - Zerwanie sesji niszczy pliki PHP i powoduje White Screen |
+-------------------------------------------------------------------+
| 4. Brak sum kontrolnych i weryfikacji integralności |
| - Ryzyko cichego uszkodzenia plików binarnych |
+-------------------------------------------------------------------+1. Przesyłanie haseł jawnym tekstem
Protokół FTP nie szyfruje ani kanału kontrolnego, ani kanału danych. Każdy pakiet przechodzący przez sieć lokalną, dostawcę internetu lub węzły tranzytowe może zostać przechwycony przez prosty sniffer sieciowy (np. Wireshark). Twoje hasło dostępowe do serwera produkcyjnego jest przekazywane jako otwarty tekst.
2. Kradzież poświadczeń z pliku wcx_ftp.ini
Total Commander przechowuje konfigurację sesji FTP w pliku wcx_ftp.ini. Hasła zapisywane w tym pliku są chronione prostym algorytmem zaciemniającym, który został złamany wiele lat temu. Złośliwe oprogramowanie typu infostealer (np. RedLine, Vidar, Lumma) automatycznie przeszukuje dysk w poszukiwaniu wcx_ftp.ini i natychmiast wykrada zapisane hasła dostępowe do serwerów.
3. Ryzyko awarii i błędu 500 (White Screen of Death)
Gdy wgrywasz na serwer zaktualizowany plik motywu lub wtyczki (functions.php, class-core.php), transfer FTP nadpisuje plik blok po bloku. Jeśli połączenie zostanie zerwane w połowie transferu, na serwerze pozostaje niekompletny, uszkodzony kod PHP, co natychmiast unieruchamia całą witrynę z błędem krytycznym 500.
Nowoczesna alternatywa: wtyczka SFTP dla Total Commandera
Jeśli interfejs dwupanelowy Total Commandera jest Twoim podstawowym narzędziem pracy, nie musisz z niego rezygnować. Wystarczy zamienić niebezpieczny FTP na w pełni szyfrowany protokół SFTP (SSH File Transfer Protocol).
Jak zainstalować i skonfigurować wtyczkę SFTP:
- Pobierz oficjalną wtyczkę SFTP plugin for Total Commander ze strony
ghisler.com(autor: Christian Ghisler). - Otwórz pobrane archiwum
.zipbezpośrednio w Total Commanderze. Program rozpozna wtyczkę i zapyta: Czy chcesz zainstalować tę wtyczkę? Wybierz Tak. - Wejdź w Otoczenie sieciowe (przycisk wyboru dysków:
\). - Otwórz folder Secure FTP.
- Naciśnij klawisz F7, aby utworzyć nowe połączenie.
- Wprowadź nazwę serwera, nazwę hosta (adres IP lub domenę), port (standardowo 22) oraz nazwę użytkownika.
Konfiguracja uwierzytelniania kluczem SSH
Zamiast wpisywać hasło, skonfiguruj uwierzytelnianie kluczem kryptograficznym:
- W ustawieniach połączenia wskaż plik klucza prywatnego w formacie
.ppk(PuTTY) lub OpenSSH (np.id_ed25519). - Jeśli używasz programu Pageant (część pakietu PuTTY), wtyczka SFTP potrafi automatycznie pobierać załadowane klucze z pamięci podręcznej agenta SSH.
- Połączenie SFTP jest w 100% odporne na podsłuch sieciowy i eliminuje ryzyko kradzieży hasła w tranzycie.
Porównanie protokołów transferu plików
Poniższa tabela przedstawia zestawienie parametrów technicznych i poziomu bezpieczeństwa dla poszczególnych metod przesyłania plików na serwer:
| Parametr | FTP (Aktywny) | FTP (Pasywny) | FTPS (FTP over TLS) | SFTP (SSH) | Git + CI/CD |
|---|---|---|---|---|---|
| Port domyślny | 21 + 20 | 21 + pula PASV | 21 + pula PASV | 22 | 443 / 22 |
| Szyfrowanie poświadczeń | Brak (jawny tekst) | Brak (jawny tekst) | Tak (TLS 1.2/1.3) | Tak (SSHv2) | Tak (HTTPS/SSH) |
| Szyfrowanie danych | Brak | Brak | Tak | Tak | Tak |
| Zgodność z NAT / firewallem | Bardzo niska (Błąd 29) | Wysoka | Średnia (wymaga TLS reuse) | Bardzo wysoka | Najwyższa |
| Podatność na błąd 29 | Bardzo wysoka | Wyeliminowana | Wyeliminowana | Wyeliminowana | Nie dotyczy |
| Atomowość wdrożenia | Brak | Brak | Brak | Opcjonalnie (symlinki) | Pełna (Zero-Downtime) |
| Zalecane do produkcji | Nie (przestarzały) | Nie (przestarzały) | Dozwolone tymczasowo | Tak (do zarządzania) | Standard inżynieryjny |
Od transferów ręcznych do automatycznych wdrożeń CI/CD
W nowoczesnych środowiskach produkcyjnych ręczne wgrywanie plików przez menedżer plików jest zastępowane zautomatyzowanym procesem wdrożeniowym.
Schemat wdrożeń atomowych z zerowym przestojem (Zero-Downtime)
Zamiast modyfikować pliki bezpośrednio w katalogu public_html, wdrożenie atomowe przygotowuje nową wersję w osobnym katalogu wydań, a następnie błyskawicznie przepina dowiązanie symboliczne:
/var/www/mojastrona/
|-- current -> /var/www/mojastrona/releases/2026-09-21-1200/ [Dowiązanie symboliczne]
|-- releases/
| |-- 2026-09-20-0930/ [Poprzednie wydanie]
| `-- 2026-09-21-1200/ [Nowe, w pełni zbudowane wydanie]
`-- shared/
|-- wp-config.php [Współdzielona konfiguracja]
`-- wp-content/uploads/ [Współdzielone media]Zalety tego rozwiązania:
- Brak przestoju: Przełączenie dowiązania symbolicznego
ln -nfszajmuje kilka milisekund. - Bezpieczeństwo: Jeśli instalacja zależności Composer lub budowanie assetów nie powiedzie się, symlink nie zostanie przełączony, a strona pozostaje w pełni sprawna na poprzednim wydaniu.
- Błyskawiczny rollback: Powrót do poprzedniej wersji w razie wykrycia błędu wymaga jedynie jednej komendy przepinającej symlink wstecz.
Automatyzacja wdrożeń z użyciem Gita eliminuje potrzebę otwierania portów FTP, chroni kod źródłowy przed przypadkowym nadpisaniem i zapewnia pełną historię każdej wprowadzonej zmiany.
Najczęściej zadawane pytania (FAQ)
Czym dokładnie jest błąd 29 w Total Commanderze?
Błąd 29 oznacza niepowodzenie otwarcia gniazda transmisji danych w trybie aktywnym (polecenie PORT). Występuje wtedy, gdy serwer FTP próbuje nawiązać połączenie zwrotne z komputerem użytkownika, ale router z NAT lub zapora sieciowa blokuje ten przychodzący pakiet.
Czy włączenie trybu pasywnego spowalnia transfer plików?
Nie. Tryb pasywny zmienia jedynie stronę inicjującą połączenie TCP dla kanału danych (inicjuje je klient, a nie serwer). Po ustanowieniu sesji prędkość przesyłania danych jest identyczna jak w trybie aktywnym.
Dlaczego Total Commander nie łączy się przez SFTP po wpisaniu portu 22 w oknie FTP?
Wbudowany moduł FTP w Total Commanderze obsługuje wyłącznie protokoły FTP oraz FTPS (FTP over TLS). SFTP to zupełnie inny protokół oparty na podsystemie SSH. Aby połączyć się przez port 22, należy zainstalować dodatkową wtyczkę SFTP ze strony producenta.
Gdzie Total Commander przechowuje hasła do połączeń FTP?
Domyślnie Total Commander przechowuje definicje połączeń i zakodowane hasła w pliku wcx_ftp.ini, zlokalizowanym w katalogu %APPDATA%\GHISLER\ lub w folderze instalacyjnym programu. Hasła te nie są silnie zaszyfrowane i mogą zostać łatwo odczytane przez złośliwe oprogramowanie.
Czy zamiast Total Commandera lepiej używać FileZilla?
FileZilla domyślnie wymusza tryb pasywny i posiada natywną obsługę SFTP bez konieczności instalowania wtyczek. Jeśli jednak wolisz dwupanelowy interfejs Total Commandera, wystarczy zainstalować wtyczkę SFTP i korzystać z kluczy SSH.
Rozwiązanie problemów z transferem plików i porzucenie przestarzałego protokołu FTP na rzecz bezpiecznych procedur wdrożeniowych to elementarne zadanie w utrzymaniu stabilnej infrastruktury. Jeśli planujesz uporządkować środowisko serwerowe lub wdrożyć bezpieczny potok CI/CD, sprawdź naszą ofertę programisty WordPress.







