Все мои компьютеры находятся за одним маршрутизатором. У меня на одном из них работает сервер 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 будет использовать только определенный порт для подключения к данным, который мой интернет-провайдер заблокировал? Если так, как бы я изменил это?
источник
Windows FTP CLI поддерживает режим PASSIVE. Используйте «quote pasv» для входа в пассивный режим.
источник
quote pasv
самом деле что-то делает в ftp.exe, а не является фиктивной командой?У меня тоже была эта проблема. Решением было остановить брандмауэр антивируса (в моем случае McAfee), он блокировал порты FTP.
источник