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?


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.


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.


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)


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


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.


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


Isto é o que a resposta de @Keljo já diz (na verdade você copiou a resposta dele / dela).
— Martin Prikryl
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.