Eu estava praticando o ftp, mas enfrentou um problema: o comando ls não está funcionando no ftp>. Por quê? Eu verifiquei em dois servidores remotos, mas o ls também não funcionou e dei uma saída diferente quando o ls foi executado. Veja abaixo as 2 caixas remotas.
O abaixo mostra meu servidor remoto onde eu instalei o vsftpd hoje.
ravbholua@ravbholua-Aspire-5315:~$ ftp rs
Connected to ravi.com.
220 (vsFTPd 3.0.2)
Name (rs:ravbholua):
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/ravbholua"
ftp> ls
500 Illegal PORT command.
ftp: bind: Address already in use
ftp>
A seguir, é para uma máquina remota diferente, onde tenho que enviar alguns arquivos. Mas como ls no ftp> não está funcionando, como transferirei arquivos da minha caixa local para essa caixa porque não posso ser confirmado sem ls se os arquivos foram transferidos ou não.
ravbholua@ravbholua-Aspire-5315:~$ ftp 125.21.153.140
Connected to 125.21.153.140.
220---------- Welcome to Pure-FTPd [TLS] ----------
220-You are user number 1 of 10 allowed.
220-Local time is now 04:34. Server port: 21.
220-This server supports FXP transfers
220 You will be disconnected after 2 minutes of inactivity.
Name (125.21.153.140:ravbholua): peacenews
331 User peacenews OK. Password required
Password:
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200-FXP transfer: from 123.63.112.168 to 10.215.10.80
200 PORT command successful
Observe que, para a máquina acima, uma vez que executei ls em ftp>, o prompt não voltou.
Nas duas máquinas remotas, obtive uma saída diferente quando executada ls em ftp>
man ftp
e achei a-p
opção a ser usada no modo passivo. Comoman ftp
menciona que o ftp é uma interface de usuário para o protocolo de transferência de arquivos padrão da Internet: é interface e não o cliente ftp !!! O que eu entendo é que o cliente ftp usa essa interface (ftp) para transferir arquivos.Respostas:
FTP é um protocolo antigo. Ele se baseia em duas conexões TCP: uma conexão de controle sobre a qual os comandos são trocados e as conexões de dados para o conteúdo dos arquivos e também para a saída de comandos como
ls
. O que está acontecendo aqui é que a conexão de controle é estabelecida, mas as conexões de dados não estão passando.Por padrão (modo ativo), as conexões de dados são estabelecidas do remetente para o receptor. Para a saída de
ls
, os dados são enviados pelo servidor, portanto, o servidor tenta abrir uma conexão com o cliente. Isso funcionou bem quando o FTP foi inventado, mas hoje em dia os clientes geralmente estão atrás de um firewall ou NAT que pode ou não suportar FTP ativo. Alterne para o modo passivo, onde o cliente sempre inicia a conexão de dados.Verifique o manual do seu
ftp
comando para ver como alternar para o modo passivo por padrão. Para uma coisa única, digitando o comandopassive
geralmente faz o truque.Você pode querer mudar para um cliente FTP mais agradável, como ncftp ou lftp .
fonte
.netrc
na minha caixa local (simplesmente coloquei o hash no início da linha em .netrc). Isso é tudo e depois da edição de ls que eu tenho enfrentado. Qual pode ser a razão pela qual o ls estava funcionando bem antes e desde ontem não está funcionando?lftp
. Estou tendo experiência em trabalhar com isso.lftp
é realmente incrível. Também gostaria de acrescentar que acabei de verificarlftp
e está funcionando perfeitamente, sem problemas de ls.ls
aqui (em lftp) está exibindo a saída corretamente.Solução completa completa para "comando PORT ilegal ftp 500". Clique no seguinte link: http://www.ucodice.com/articles/ftp-500-illegal-port-command/ .
Excerto
Tentando conectar o servidor ftp e recebendo o comando 500 Illegal port. Esse problema pode ocorrer quando o programa ftp não está configurado para o modo passivo.
Você pode receber um snippet de erro, como:
Para resolver esse problema, você pode definir a porta ou o ftp no arquivo de configuração do servidor ftp e definir o endereço IP ou o servidor PASV.
Verifique o arquivo de configuração para as configurações abaixo.
Depois disso, reinicie o serviço ftp e verifique a conexão ftp.
fonte