Запуск экземпляра Google Compute. По устаревшим причинам мне нужно использовать FTP в качестве клиента (а не сервера) для доступа к FTP-серверам других людей.
Я пробовал "пассивный" режим, безрезультатно:
instance-1:~$ ftp -p 123.123.123.123 <--- note –p option for passive mode
Connected to 123.123.123.123.
220 (vsFTPd 3.0.3)
Name (123.123.123.123:user): username
FTP server
331 Please specify the password.
Password:
230 Login successful. <--- note successful login
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (123,123,123,123,21).
(system hangs at this point, for about 1-2 minutes)
ftp: connect: Connection timed out
ftp>
(IP-адрес и имя пользователя удалены)
Попытка get filename.ext
на известном файле также не удается.
Если я попытаюсь использовать непассивный режим, я сразу же получаю следующую ошибку:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
500 Illegal PORT command.
ftp: bind: Address already in use
Есть предположения? Я попытался открыть порты 20 и 21 для входа и предполагаю, что выходные порты доступны.
Пожалуйста, не нужно комментировать аспекты безопасности или альтернативы, такие как SFTP. Это автоматический процесс сбора данных для нескольких сотен серверов, поэтому нецелесообразно просить старых клиентов перейти на SFTP или более безопасный API, а передаваемые данные в любом случае не являются конфиденциальными.
Заранее благодарю за любую помощь!
Для непассивного режима вы должны «переписать» IP-пакет команды PORT, отправленный на сервер (он содержит внутренний IP-адрес, а не публичный). См. Мое временное решение для облака Google Вот.
Причина может быть та же, что и Вот, при подключении в пассивном режиме должен быть открыт диапазон портов более высокого уровня.