Por que sou expulso de uma sessão FTP depois de executar um comando?

12

Por que sou expulso de uma sessão FTP depois de executar um comando? Parece que depois que eu faço login com êxito em um servidor, obtém o seguinte após executar um comando como "ls" (incluí a parte do erro nas tags "[ERROR]"):

allen92@allen92-VirtualBox:~/Videos$ ftp -n ftp.FreeBSD.org
Connected to ftp.FreeBSD.org.
220 beastie.tdk.net FTP server (Version 6.00LS) ready.
ftp> user
(username) anonymous
331 Guest login ok, send your email address as password.
Password: 
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
[ERROR]
421 Service not available, remote server has closed connection
[ERROR]
ftp> 

Isso parece acontecer em qualquer servidor FTP remoto. Tudo funciona bem quando eu entro na máquina local e executo comandos de FTP. Se, de fato, o erro "421" é um erro genérico, existe alguma maneira de descobrir a origem do problema? Qualquer dica sobre isso seria apreciada. Não consegui encontrar nenhum suporte para esse problema específico . Qualquer pessoa com um problema semelhante, compartilhe seus pensamentos.

NOTA: Eu tenho o VSFTPD instalado.

AllenD
fonte

Respostas:

13

Provavelmente, existe um firewall NAT entre você e os servidores que mostram o sintoma. (Os firewalls NAT ocultam uma rede inteira atrás de um único número IP).

O problema é que o ftp deseja enviar os dados resultantes do comando em uma nova conexão TCP / IP separada e que não pode passar pelo firewall porque precisa passar do servidor para você e você está oculto atrás do firewall que possui nenhuma pista de que os dados se destinam à sua máquina. Quando o protocolo FTP foi projetado, muitos dispositivos modernos como o roteador NAT (que se tornou necessário quando havia mais dispositivos do que os endereços IP disponíveis) ainda não haviam sido inventados.

Use o pasvcomando (pode ser chamado de algo diferente em seu cliente) para mudar para uma conexão passiva em que as conexões de dados vão de você para o servidor.

Consulte http://slacksite.com/other/ftp.html para obter uma explicação mais detalhada.

Thorbjørn Ravn Andersen
fonte
Muito obrigado. No caso do VSFTPD, o comando para entrar no modo passivo é "passivo". Isso parece estar funcionando por enquanto. Eu acho que toda essa situação tem a ver comigo executando a instalação do Linux em uma máquina virtual e suas configurações não tão padrão. Vou descobrir como ativar o modo "passivo" por padrão. Depois que eu descobrir, postarei para qualquer pessoa interessada.
Allend
Não é incomum que a rede padrão para máquinas virtuais seja algum tipo de NAT, portanto a máquina não é exposta. Para o VirtualBox, mudar para Bridged faz com que ele apareça como qualquer outra máquina na rede local.
Thorbjørn Ravn Andersen
-1

Adicione ou ative esta linha no /etc/vsftpd.conf

seccomp_sandbox = NO

Andrej Sevčnikar
fonte
Esta resposta resolveu meu problema, mas ainda tenho dúvidas sobre essa configuração não documentada.
precisa
Por quê seccomp_sandbox=NO a resposta certa, sob certas circunstâncias, está documentada no /etc/vsftpd.confarquivo: `` # # seccomp_sanbox adiciona uma camada de segurança adicional que limita o número de # syscalls que podem ser executados via vsftpd. No entanto, pode acontecer que uma # whitelist não permita uma chamada legítima (geralmente acionada indiretamente por # biblioteca de terceiros como pam ou openssl) e o processo esteja sendo morto pelo kernel. # # Mesmos se seus moldes de servidor em situações comuns (download de arquivos, upload), # remova o comentário da linha seguinte e não se esqueça de bug aberto em # bugzilla.novell.com se
GSchukat