FTP „425 Nie można otworzyć połączenia danych” dzieje się tylko przy użyciu wiersza polecenia

8

Cały mój komputer jest za jednym routerem. Na jednym z nich działa serwer FileZilla. Usiłuję zautomatyzować przesyłanie do serwera za pomocą skryptu wsadowego i wbudowanego ftp.exe w systemie Windows. Skonfigurowałem dynamiczną usługę DNS, aby móc uzyskać dostęp do mojego serwera spoza routera i skonfigurowałem przekierowanie portów w routerze na mój serwer. Mogę się połączyć i przenieść w porządku za pomocą Google Chrome, Eksploratora Windows i klienta FileZilla. Jednak za każdym razem, gdy próbuję użyć ftp.exe (ręcznie lub w skrypcie wsadowym), mogę połączyć się z serwerem, ale jeśli spróbuję zrobić coś, co otworzy połączenie danych (LIST, STOR lub RETR), pojawia się następujący błąd: 425 Nie można otworzyć połączenia danych. Zezwoliłem ftp.exe na zapory ogniowe obu komputerów. Jakieś pomysły, co się dzieje lub jak to naprawić? Nie muszę używać ftp.

EDYCJA Wiem, że mój dostawca usług internetowych blokuje wiele portów, w tym 21 i kilka innych w tym zakresie. Wszystko to jest ustawione na porcie 2121, z pasywnymi portami ustawionymi na 2122-2142, wszystkie zostały przekazane do routera. Być może ftp.exe użyje tylko określonego portu do transmisji danych, który mój dostawca zablokował? Jeśli tak, jak bym to zmienić?

Garrett
źródło

Odpowiedzi:

5

Zwykły aktywny FTP używa osobnego połączenia danych zainicjowanego przez serwer do przesyłania danych i używa tylko zwykłego połączenia portu 21 jako kanału sterującego. Jednak gdy klient znajduje się za zaporą, zapora prawdopodobnie blokuje to połączenie. Domyślam się, że Chrome, Explorer, FireZilla itp. Są wystarczająco inteligentne, aby wypróbować tryb pasywny, w którym oryginalne połączenie inicjowane przez klienta jest używane zarówno jako kanał kontrolny, jak i kanał danych.

Wygląda na to, że domyślny klient FTP CLI systemu Windows nie obsługuje trybu pasywnego. Musisz więc przejść na NcFTP . Alternatywnie i myślę, że prawdopodobnie lepszą opcją jest po prostu użycie SFTP. FTP jest niepewny i naprawdę można go używać tylko w sieciach LAN. SFTP jest w pełni zaszyfrowany, a także wykorzystuje tylko jeden kanał danych i poleceń. Jeśli potrzebujesz klienta CLI SFTP, PSFTP jest dobrym rozwiązaniem.

Lèse majesté
źródło
Próbowałem już tego bez powodzenia
Garrett,
@Garrett: Hrmm ... wygląda na to, że artykuł w blogu, z którym się łączyłem, jest nieprawidłowy, a domyślny klient FTP CLI nie obsługuje trybu pasywnego. W takim przypadku musisz zmienić klientów FTP. NcFTP jest jedną z opcji i zdecydowanie obsługuje tryb pasywny.
Lèse majesté
Obserwowałem żądanie / odpowiedź podczas przesyłania za pomocą Eksploratora Windows, użyłem cudzysłowu, aby ręcznie wysłać dokładnie te same polecenia, ale wciąż otrzymałem ten sam błąd
Garrett
@Garrett: Myślałem, że Eksplorator Windows działa? Jeśli klient nie obsługuje trybu pasywnego, powiadomienie serwera o przełączeniu na to nie będzie miało znaczenia.
Lèse majesté
Czy obsługuje wiersz poleceń i czy jest niezależnym exe?
Garrett,
0

Windows FTP CLI obsługuje tryb PASYWNY. Użyj „quote pasv”, aby wejść w tryb pasywny.

George Rios
źródło
2
Nie sądzę, że to naprawdę działa . Czy możesz potwierdzić, że quote pasvfaktycznie robi coś w ftp.exe i nie jest tylko pozorowanym poleceniem?
Lèse majesté
0

Też miałem ten problem. Rozwiązaniem było zatrzymanie zapory antywirusowej (w moim przypadku McAfee), blokowało porty FTP.

Sfalcini
źródło
To naprawdę nie jest rozwiązanie.
ivan_pozdeev