Perché vengo espulso da una sessione FTP quando eseguo un comando?


12

Perché vengo espulso da una sessione FTP quando eseguo un comando? Sembra che una volta effettuato l'accesso a un server ottenga quanto segue dopo aver eseguito un comando come "ls" (ho racchiuso la porzione di errore nei tag "[ERRORE]"):

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> 

Questo sembra accadere su qualsiasi server FTP remoto. Tutto funziona bene quando accedo al computer locale ed eseguo i comandi FTP. Se in realtà l'errore "421" è un errore generico, c'è un modo per scoprire l'origine del problema? Qualunque vantaggio su questo sarebbe apprezzato. Non sono stato in grado di trovare alcun supporto su questo particolare problema. Chiunque abbia un problema simile, condividi i tuoi pensieri.

NOTA: ho VSFTPD installato.

Risposte:


13

Molto probabilmente c'è un firewall NAT tra te e i server che mostra il sintomo. (I firewall NAT nascondono un'intera rete dietro un singolo numero IP).

Il problema è che ftp vuole inviare i dati risultanti dal comando in una nuova connessione TCP / IP separata e che non può passare attraverso il firewall perché deve passare dal server a te e sei nascosto dietro il firewall che ha nessun indizio che i dati siano destinati alla tua macchina. Quando è stato progettato il protocollo FTP, molti dispositivi moderni come il router NAT (che è diventato necessario quando c'erano più dispositivi rispetto agli indirizzi IP disponibili) non erano ancora stati inventati.

Utilizzare il pasvcomando (può essere chiamato qualcosa di diverso nel client) per passare a una connessione passiva in cui le connessioni dati passano da te al server.

Vedi http://slacksite.com/other/ftp.html per una spiegazione più dettagliata.


Molte grazie. Nel caso di VSFTPD, il comando per accedere alla modalità passiva è "passivo". Per ora sembra funzionare. Penso che tutta questa situazione abbia a che fare con l'esecuzione dell'installazione Linux su una macchina virtuale e le sue impostazioni non così standard. Ho intenzione di scoprire come abilitare la modalità "passiva" per impostazione predefinita. Una volta scoperto che posterò per chiunque sia interessato.
AllenD

Non è raro che la rete predefinita per le macchine virtuali sia una sorta di NAT, quindi la macchina non è esposta. Per VirtualBox il passaggio a Bridged lo fa apparire come qualsiasi altro computer sulla rete locale.
Thorbjørn Ravn Andersen,

-1

Aggiungi o abilita questa riga in /etc/vsftpd.conf

seccomp_sandbox = NO


Questa risposta ha risolto il mio problema ma ho ancora domande su questa configurazione non documentata.
A1rPun

Perché seccomp_sandbox=NOla risposta giusta in determinate circostanze è documentata nel /etc/vsftpd.conffile: `` # seccomp_sanbox aggiunge un livello di sicurezza adizionale che limita il numero di # syscalls può essere eseguito tramite vsftpd. Tuttavia, può accadere che una # whitelist non consenta una chiamata legittima (solitamente indirettamente attivata da # libreria di terze parti come pam o openssl) e che il processo venga ucciso dal kernel. # # Pertanto, se il tuo server muore in situazioni comuni (download di file, upload), # decommenta la seguente riga e non dimenticare di aprire il bug su # bugzilla.novell.com se
GSchukat
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.