A função FTP da linha de comando não funciona

12

Estou usando o Windows 7 e tenho vários aplicativos de cliente FTP funcionando sem nenhum problema. No entanto, quando eu uso o FTP da linha de comando, posso conectar-me, efetuar login (depois de inserir o nome de usuário e a senha), mas ele sempre é desconectado quando o comando dir ou ls é usado. A resposta é:

Conexão fechada pelo host remoto.

Como posso resolver este problema?

Hong
fonte
Abra as portas 20, 21 no seu firewall.
21815 Sean Perkins

Respostas:

13

Você geralmente verá esse tipo de coisa acontecer quando o servidor tenta se conectar a você, mas não consegue. O FTP originalmente usou dois canais TCP . Um era para comandos e o outro para transferência de dados. Quando você executa o comando dir, ele usa um canal de dados. O canal de dados é estabelecido sob demanda e faz com que o servidor tente se conectar novamente a você.

Isso provavelmente está sendo bloqueado pelo seu roteador ou firewall do Windows. Você precisa de um cliente que suporte o modo PASV .

Você pode ativar o modo PASV no Internet Explorer . Ou use um cliente diferente. Não tenho certeza se a versão da linha de comando pode usar o modo PASV. É um cliente muito básico.

Matt H
fonte
Obrigado Matt. Eu pensei que o cliente FTP da linha de comando usasse o modo passivo por padrão, mas eu encontrei várias postagens dizendo que o FTP da linha de comando do Windows realmente exclui o modo passivo. O IE sempre funciona bem na minha máquina para FTP. Eu só quero usar a linha de comando para examinar alguns dados brutos de um servidor FTP.
Hong
Como um experimento, você pode ver se a ativação ou desativação do PASV no Internet Explorer faz a diferença .. ou gera um erro semelhante ou o mesmo.
barlop
1
ftp> PASV - comando inválido. (Windows 7 Ent.). Essa resposta é exatamente o que acontece no trabalho.
Bratch
6
ele precisa ser QUOTE PASV
JosephStyons
5

Ocorreu um problema ao transmitir arquivos via FTP, uma vez que estava conectado à caixa em questão. Isso criaria o nome do arquivo, mas o arquivo estava vazio. Eu o resolvi fazendo o seguinte:

  • Vá para Painel de controle → Firewall do Windows → Configurações avançadas → Regras de entrada
  • Clique duas vezes na coluna Nome para classificar por nome
  • Role para baixo até ver duas regras chamadas "File Transfer Program"; estes foram definidos como Bloquear no meu PC (grande círculo vermelho com uma linha passando por ele)
  • Clique duas vezes na regra
  • Na guia Geral , em Ação , defina como Permitir a conexão.
  • Clique OK
  • Faça isso para a outra regra

Deve ser bom ir agora.

Keljo
fonte
Quais são as implicações de segurança para fazer isso?
Peter Mortensen
Programas no seu PC agora podem usar ftp.
precisa
Excluir as regras, conectar-se via FTP e emitir algo como um comando "dir" (acionar o firewall do Windows para perguntar se o FTP deve ser permitido e recriar as regras, se você disser Sim) também pode ajudar.
mlvljr 20/02
5

O cliente de linha de comando FTP do Windows ftp.exesuporta apenas um modo FTP ativo.

Configurar o FTP no modo ativo pode ser complicado hoje em dia devido a firewalls e NATs.

É provável que, devido ao seu firewall local ou NAT, o servidor não tenha conseguido se conectar ao seu cliente para estabelecer uma conexão de transferência de dados para a listagem ( lsou dircomandos) de diretório .

Ou seu cliente não está ciente de seu endereço IP externo e, em vez disso, fornece um endereço interno para o servidor (no PORTcomando), o qual o servidor obviamente não pode usar.

Veja meu artigo Configuração de rede para o modo ativo .


Se possível, você deve usar um modo passivo, pois normalmente não requer configuração adicional no lado do cliente.

Infelizmente, o cliente de linha de comando FTP do Windows (the ftp.exe) não suporta o modo passivo. Torna-o bastante inútil hoje em dia.

Use qualquer outro cliente de linha de comando FTP do Windows. A maioria dos outros suporta o modo passivo.

Por exemplo, o WinSCP assume como padrão o modo passivo e há um guia disponível para converter o script FTP do Windows em script WinSCP .

(Eu sou o autor do WinSCP)

Martin Prikryl
fonte
Funciona em qualquer versão do Windows (desde XP). Que erro você recebe? Considere fazer uma nova pergunta separada com mais detalhes.
Martin Prikryl
Você precisa de ambos winscp.come winscp.exena mesma pasta. Eu acredito que a mensagem de erro diz claramente que o winscp.comprocura winscp.exeem sua pasta. Veja também winscp.net/eng/docs/executables
Martin Prikryl
Np, por favor, apague os comentários.
Martin Prikryl
4

Encontrei esse problema em um servidor Windows 2008.

Este artigo sugere a habilitação do serviço Gateway de camada de aplicativo. Isso não resolveu o problema para mim.

O que corrigiu o problema foi adicionar uma exceção no Firewall do Windows para C: \ Windows \ system32 \ ftp.exe

calça
fonte
1
Por padrão, o firewall do Windows inclui o ftp.exe em sua exceção, mas apenas para a rede doméstica / comercial. Verifique se você não está na rede pública, caso contrário, também permita ftp para a rede pública.
Entalhes
1

Eu estava enfrentando o mesmo problema com o software POS de terceiros em uma máquina Windows 7 que agrupa dados de transações de clientes de volta para um servidor SQL.

Funcionou bem até que o local do cliente alterou os ISPs e, portanto, os endereços IP estáticos. Os comandos de FTP da linha de comando não funcionaram além do logon inicial e nenhum dos remédios que encontrei online ou esse thread funcionou.

Apenas para começar, recriei a regra de FTP no firewall, um roteador / firewall D-Link barato e viola, parece estar funcionando novamente.

Plexus Sage
fonte
0

Problema de FTP

Portas abertas no NSG azul e no firewall do servidor: 21,20,4000-40009,990,14147

Problema: o cliente não pode se conectar ao ftp na linha de comando e no Powershell

Conseguimos conectar com testuser, mas não conseguimos ver o diretório / List

Instalado o Wireshark no servidor e no meu laptop para capturar pacotes Criou um filtro no wireshark com "ftp" e "IP" A captura de pacotes não indica o clima, é o modo passivo ou ativo e o IP de origem está correto. (configuramos o IP primário e o secundário no servidor)

Descobrimos que a conexão ftp não está funcionando no prompt de comando. tentando iniciar uma conexão com ftp.abcd.com que estava resolvendo para 11.22.33.44 e não para o servidor FTP real 44.33.22.11 Os endereços IP 11.22.33.44 e 44.33.22.11 estão configurados na mesma máquina. No entanto, o DNS estava resolvendo para o IP FTP secundário, em vez de primário.

Inicialmente, também descobrimos que as conexões FTP para 11.22.33.44 estavam funcionando bem e essas conexões eram conexões ativas. Não conseguimos ver que o modo Passivo funciona aqui. Além disso, ao iniciar a conexão com 11.22.33.44 do Commad, a sessão congela após o comando 'dir'; no entanto, o mesmo está funcionando com outros clientes ftp como o FileZilla e o Winscp.

Eu tentei testar com o WinSCP e o FileZilla e vi que as conexões do modo passivo estão funcionando bem e o Active não, o que é um comportamento esperado. Verificamos por que o comando 'dir' não está funcionando nos dispositivos após a autenticação bem-sucedida. Temos que ver que o firewall do Windows está bloqueando a conexão. Desabilitamos o firewall e tudo começou a funcionar como esperado. Eu verifiquei o mesmo após terminar de criar a regra do firewall, os problemas foram resolvidos. Havia um sistema que, mesmo depois de desativar o firewall, ficou preso na listagem de diretórios, isso pode ser um problema nesse sistema ou as conexões estão sendo bloqueadas por um fator externo. Desde depois de desabilitar a maioria de nós é capaz de funcionar bem.

as configurações precisam ser feitas na máquina Vá para Painel de controle → Firewall do Windows → Configurações avançadas → Regras de entrada Clique duas vezes na coluna Nome para classificar por nome Role para baixo até ver duas regras chamadas "Programa de transferência de arquivos"; eles foram definidos como Bloquear no meu PC (grande círculo vermelho com uma linha passando por ele) Clique duas vezes na regra Na guia Geral, em Ação, defina como Permitir a conexão. Clique em OK

Desh Kanth
fonte
Isto é o que a resposta de @Keljo já diz (na verdade você copiou a resposta dele / dela).
Martin Prikryl