FTP «425 Не удается открыть соединение для передачи данных» происходит только при использовании командной строки


8

Все мои компьютеры находятся за одним маршрутизатором. У меня на одном из них работает сервер FileZilla. Я пытаюсь автоматизировать загрузку на сервер, используя пакетный скрипт и встроенный в Windows ftp.exe. Я настроил службу динамического DNS, чтобы иметь возможность доступа к моему серверу снаружи маршрутизатора, и я настроил переадресацию портов в маршрутизаторе на мой сервер. Я могу подключиться и передать просто отлично, используя Google Chrome, Windows Explorer и клиент FileZilla. Однако всякий раз, когда я пытаюсь использовать ftp.exe (вручную или в пакетном скрипте), я могу подключиться к серверу, но если я пытаюсь сделать что-либо, что может открыть соединение для передачи данных (LIST, STOR или RETR), я получаю следующую ошибку: 425 Не удается открыть соединение для передачи данных. Я разрешил ftp.exe в брандмауэрах обоих компьютеров. Есть идеи, что происходит или как я могу это исправить? Мне не нужно использовать FTP.

РЕДАКТИРОВАТЬ Я знаю, что мой провайдер блокирует многие порты, включая 21 и несколько других в этом диапазоне. Это все настроено на порте 2121, с пассивными портами, настроенными на 2122-2142, все они были переданы в маршрутизаторе. Возможно, ftp.exe будет использовать только определенный порт для подключения к данным, который мой интернет-провайдер заблокировал? Если так, как бы я изменил это?

Ответы:


5

Обычный активный FTP использует отдельное инициируемое сервером соединение для передачи данных и использует только обычное соединение через порт 21 в качестве канала управления. Однако когда клиент находится за брандмауэром, он может блокировать это соединение. Я предполагаю, что Chrome, Explorer, FireZilla и т. Д. Достаточно умны, чтобы попробовать пассивный режим, в котором исходное инициируемое клиентом соединение используется как канал управления и передачи данных.

Похоже, что по умолчанию Windows CLI FTP-клиент не поддерживает пассивный режим. Так что вам нужно переключиться на NcFTP . В качестве альтернативы, и я думаю, что, вероятно, лучший вариант, это просто использовать SFTP. FTP небезопасен и действительно используется только в локальных сетях. SFTP полностью зашифрован, а также использует только один канал для данных и команд. Если вам нужен CLI SFTP-клиент, PSFTP - хороший вариант.


Я уже попробовал это без удачи
Гарретт

@Garrett: Хммм ... похоже, что статья в блоге, на которую я ссылался, неверна, и FTP-клиент CLI по умолчанию не поддерживает пассивный режим. В этом случае вам придется переключать клиентов FTP. NcFTP - один из вариантов, и он определенно поддерживает пассивный режим.
Lèse Majesté

Я наблюдал за запросом / ответом при передаче через Windows Explorer, использовал кавычку для ручной отправки точно таких же команд, но все еще получал ту же ошибку
Garrett

@Garrett: я думал, что Windows Explorer работает? Если клиент не поддерживает пассивный режим, то указание серверу переключиться на него не имеет значения.
Lèse Majesté

Поддерживает ли он командную строку и является ли он независимым exe?
Гаррет


0

У меня тоже была эта проблема. Решением было остановить брандмауэр антивируса (в моем случае McAfee), он блокировал порты FTP.


Это не совсем решение.
ivan_pozdeev
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.