В режиме EPSV всегда происходит сбой в локализации при подключении через FTPS - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь загрузить файл с curl на веб-сервер, который поддерживает как FTP, так и FTPS.

curl -vvv --ftp-ssl-reqd --user "username:password" ftp://ftps.website.com -T /path/to/a/file

Эта команда занимает очень много времени, потому что curl сначала пытается использовать EPSV, а затем происходит сбой в соответствии с журналами

> EPSV
* Connect data stream passively
* ftp_perform ends with SECONDARY: 0
< 229 Entering Extended Passive Mode (|||50107|)
*   Trying 123.456.789.123...
* TCP_NODELAY set
* Connecting to 123.456.789.123 (123.456.789.123) port 50107
* Connection failed
* connect to 123.456.789.123 port 21 failed: Operation timed out
* Failed to connect to ftps.website.com port 21: Operation timed out
* Failed EPSV attempt. Disabling EPSV
> PASV

После отключения EPSV передача завершается успешно в обычном режиме PASV.

Подключение к тому же веб-серверу через простой, незашифрованный FTP и использование EPSV работает нормально. Дэниел Стенберг пишет , что

Это особенно сложно, если вы включаете FTPS (зашифрованный FTP), так как тогда новый номер порта невидим для промежуточных ящиков, таких как межсетевые экраны.

но он не предлагает никакого решения.

Как правильно исправить это для FTPS кроме просто «никогда не использовать EPSV для FTPS»?

1 Ответ

1 голос
/ 03 августа 2020

Как насчет того, чтобы просто использовать --disable-epsv? И моя цитата не говорит о том, что EPSV в частности сложнее, чем PASV. Оба варианта одинаково сложны в ситуации FTPS, я бы сказал, по указанной причине.

Обычно с EPSV проблем нет. Команда работает как через FTPS, так и через FTP. Ваша проблема скорее связана с указанным вами сервером c и сетевым окружением

...