conexão wget ftp falhando após o comando PASV

3

Ao tentar transferir todos os arquivos de um servidor web ("fonte") para outro ("destino"), o comando wget está se conectando via FTP, mas não pode prosseguir além do comando PASV.

Estou usando uma conexão SSH com o servidor "destination" (uma caixa Linux em hospedagem compartilhada) para executar o comando wget.

O servidor "fonte" é um servidor da Microsoft, e o cliente FTP na minha área de trabalho não tem nenhum problema com isso.

Aqui está o comando que estou usando para iniciar a transferência:

wget -m ftp://username:'password'@sourceserver.com

O login é bem sucedido, então estes comandos são emitidos:

==> SYST ... done.      ==> PWD ... done.
==> TYPE I ... done.    ==> CWD not needed.
==> ... couldn't connect to xxx.xxx.xxx.xxx port 1128: Connection timed out
Retrying.

Com o erro "não foi possível conectar", em cada nova tentativa, ele tenta um número de porta diferente (não 21, com o qual já se conectou com êxito). A primeira vez que tomei nota do erro, tentei portas na faixa 487X.

Não sei dizer se o problema está no lado do servidor da Microsoft ("fonte") ou no lado do Linux ("cliente").

Pensamentos?

    
por TheDavidJohnson 24.03.2014 / 20:54

3 respostas

2

Para transferências de arquivos ou listagens de diretórios, o FTP abre conexões TCP adicionais em portas dinâmicas. No modo ativo, o cliente cria um ouvinte local e informa ao servidor sobre seu IP: Porta usando o comando PORT e o servidor se conecta à porta do cliente (geralmente da porta 20 no lado do servidor). No modo passivo, o servidor abre a porta e informa ao cliente onde ele atende em resposta ao comando PASV do cliente.

Ambos os modos precisam

  • um IP acessível pelo outro lado, por ex. modo ativo com um cliente por trás de um roteador NAT simples não funcionará
  • nenhum ou um firewall totalmente aberto, porque as portas no lado do ouvinte serão diferentes para cada conexão.

Se você não tem nenhum problema em acessá-lo do cliente de desktop, pode ser que o seu cliente de desktop esteja usando o modo ativo, enquanto o wget usa o modo passivo ou que não haja roteador de firewall / NAT entre sua área de trabalho e o servidor, mas entre a sua hospedagem compartilhada e o servidor, existe um.

Sem obter mais detalhes sobre sua configuração, é difícil especular mais.

    
por 24.03.2014 / 21:20
0

Para VSFTPD, você pode especificar intervalos de portas passivas

pasv_min_port=1024
pasv_max_port=1048

Crédito: Como configurar o FTP no Amazon Cloud Server

Além disso, vi wget fail , mas enrole bem-sucedido quando o

pasv_address

não correspondeu ao IP do pedido - por exemplo, a solicitação estava usando o IP da rede externa, mas o pasv_address era o IP da rede interna.

Não sei por que isso ocorreu, mas deve haver uma diferença na implementação subjacente entre o wget e o curl.

    
por 11.01.2016 / 23:18
0

Outra maneira é evitar o modo passivo, o argumento add -no-passive no seu comando wget pode fazer isso.

wget -r --no-passive --no-parent ftp://account:[email protected]/infinit_request/ -P /root
    
por 31.03.2017 / 08:41