Para o modo não passivo, é necessário "reescrever" o pacote IP do comando PORT enviado ao servidor (ele contém o endereço IP interno e não o público). Veja minha solução temporária para o google cloud aqui .
Execução de uma instância do Google Compute. Por motivos de legado, preciso usar o FTP como um cliente (não um servidor) para acessar os servidores FTP de outras pessoas.
Eu tentei o modo "passivo", sem resultados:
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>
(endereço IP e nome de usuário redigidos)
A tentativa de get filename.ext
em um arquivo conhecido também falha.
Se eu tentar usar o modo não passivo, recebo o seguinte erro imediatamente:
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
Alguma ideia? Eu tentei abrir portas 20 & 21 para ingresso e suponho que as portas de saída estejam disponíveis.
Por favor, não há necessidade de comentar sobre os aspectos de segurança ou sobre alternativas, como SFTP. Esse é um processo de coleta de dados automatizado para várias centenas de servidores, portanto, não é prático pedir aos clientes legados que mudem para SFTP ou para uma API mais segura, e os dados que estão sendo transferidos não são sensíveis de qualquer maneira.
Agradecemos antecipadamente por qualquer ajuda!
Para o modo não passivo, é necessário "reescrever" o pacote IP do comando PORT enviado ao servidor (ele contém o endereço IP interno e não o público). Veja minha solução temporária para o google cloud aqui .
Pode haver a mesma causa raiz que aqui , um intervalo de portas superiores deve ser aberto se você estiver se conectando no modo Passivo.