Команда 200 PORT выполнена успешно. Рассмотрим использование PASV. 425 Не удалось установить соединение

У меня установлен FTP-сервер в Ubuntu 12.04 LTS.

Теперь, когда я пытаюсь подключиться к FTP-серверу из Windows 7 через командную строку ftp.exe, я успешно подключаюсь, но я не могу получить список каталогов. Я получаю ошибку

200 PORT command successful. Consider using PASV.
425 Failed to establish connection. 

Ответ 1

Попробуйте использовать passive команду перед использованием ls.

От FTP-клиента, чтобы проверить, поддерживает ли FTP-сервер пассивный режим, после входа в систему введите quote PASV.

Ниже приведены примеры подключения к серверу vsftpd с включенным и выключенным пассивным режимом

vsftpd с pasv_enable=NO:

# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.3.5)
Name (localhost:john): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quote PASV
550 Permission denied.
ftp> 

vsftpd с pasv_enable=YES:

# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.3.5)
Name (localhost:john): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quote PASV
227 Entering Passive Mode (127,0,0,1,173,104).
ftp> 

Ответ 2

Вы используете FTP в активном режиме.

Настройка FTP в активном режиме может быть громоздкой в настоящее время из-за брандмауэров и NAT.

Вероятно, из-за локального брандмауэра или NAT сервер не смог подключиться к вашему клиенту, чтобы установить соединение для передачи данных.

Или ваш клиент не знает его внешний IP-адрес и вместо него PORT внутренний адрес на сервер (в команде PORT), который, очевидно, сервер не может использовать. Но это не должно быть так, поскольку vsftpd по умолчанию отклоняет адрес передачи данных, не идентичный исходному адресу соединения FTP-управления (директива port_promiscuous).

См. Статью " Конфигурация сети для активного режима".


Если это возможно, вы должны использовать пассивный режим, так как обычно он не требует дополнительной настройки на стороне клиента. Это также то, что сервер предложил вам "Рассмотрите возможность использования PASV". PASV - это команда FTP, используемая для входа в пассивный режим.

К сожалению, клиент командной строки Windows FTP (ftp.exe) вообще не поддерживает пассивный режим. В наши дни это становится бесполезным.

Вместо этого используйте любой другой сторонний клиент командной строки Windows FTP. Большинство других поддерживают пассивный режим.

Например, клиент FTP WinSCP по умолчанию использует пассивный режим и существует руководство для преобразования сценария Windows FTP в сценарий WinSCP.

(Я автор WinSCP)

Ответ 3

На самом деле ваш брандмауэр окна блокирует соединение, поэтому вам нужно ввести эти команды в cmd.exe от администратора.

1) netsh advfirewall firewall add rule name="FTP" dir=in action=allow program=%SystemRoot%\System32\ftp.exe enable=yes protocol=tcp

2) netsh advfirewall firewall add rule name="FTP" dir=in action=allow program=%SystemRoot%\System32\ftp.exe enable=yes protocol=udp

если в случае, если что-то пойдет не так, вы можете вернуться к этому:

1) netsh advfirewall firewall delete rule name="FTP" program=%SystemRoot%\System32\ftp.exe