La funzione FTP da riga di comando non funziona


12

Sto usando Windows 7 e ho diverse applicazioni client FTP che funzionano senza problemi. Tuttavia, quando utilizzo FTP da riga di comando, posso collegarmi, accedere (dopo aver inserito nome utente e password), ma viene sempre disconnesso quando viene utilizzato il comando dir o ls. La risposta è:

Connessione chiusa dall'host remoto.

Come posso risolvere questo problema?


Apri le porte 20, 21 nel tuo firewall.
Sean Perkins,

Risposte:


13

Di solito vedrai questo tipo di cose succedere quando il server tenta di riconnetterti ma non ci riesce. FTP originariamente utilizzava due canali TCP . Uno era per i comandi e l'altro per il trasferimento di dati. Quando si esegue il comando dir, utilizza un canale dati. Il canale dati viene stabilito su richiesta e provoca il tentativo del server di riconnettersi.

È molto probabile che venga bloccato dal router o dal firewall di Windows. È necessario un client che supporti la modalità PASV .

È possibile abilitare la modalità PASV in Internet Explorer . O usa un altro client. Non sono sicuro che la versione da riga di comando possa utilizzare la modalità PASV. È un cliente molto semplice.


Grazie Matt. Pensavo che il client FTP da riga di comando usasse la modalità passiva per impostazione predefinita, ma ho appena trovato più post che dicevano che FTP dalla riga di comando di Windows in realtà esclude la modalità passiva. IE funziona sempre bene sulla mia macchina per FTP. Voglio solo usare la riga di comando per esaminare alcuni dati grezzi da un server FTP.
Hong

Come esperimento, potresti vedere se abilitare o disabilitare PASV in Internet Explorer fa la differenza .. o dà un errore simile o uguale.
barlop

1
ftp> PASV - Comando non valido. (Windows 7 Ent.). Questa risposta è esattamente ciò che accade sul lavoro.
Bratch,

6
deve essere PREVENTIVO PASV
JosephStyons,

5

Ho avuto un problema con la trasmissione di file tramite FTP una volta effettuato l'accesso nella casella in questione. Creerebbe il nome del file, ma il file era vuoto. L'ho risolto nel modo seguente:

  • Vai a Pannello di controllo → Windows Firewall → Impostazioni avanzate → Regole in entrata
  • Fare doppio clic sulla colonna Nome per ordinare per nome
  • Scorri verso il basso fino a visualizzare due regole chiamate "Programma di trasferimento file"; questi erano impostati su Block sul mio PC (grande cerchio rosso con una linea che lo attraversava)
  • Fare doppio clic sulla regola
  • Nella scheda Generale , in Azione , impostare su Consenti la connessione
  • Clic OK
  • Fallo per l'altra regola

Dovrebbe essere bello andare ora.


Quali sono le implicazioni di sicurezza nel fare questo?
Peter Mortensen,

I programmi sul tuo PC ora possono usare ftp.
Mark Deven,

Anche l'eliminazione delle regole, quindi la connessione tramite FTP e l'emissione di qualcosa come un comando "dir" (attivazione del firewall di Windows per chiedere se FTP dovrebbe essere consentito e ricreare le regole, se si dice Sì) può anche aiutare.
mlvljr,

5

Il client della riga di comando FTP di Windows ftp.exesupporta solo una modalità FTP attiva.

La configurazione dell'FTP in modalità attiva può essere complicata al giorno d'oggi a causa di firewall e NAT.

È probabilmente a causa del firewall locale o NAT che il server non è stato in grado di riconnettersi al client per stabilire una connessione di trasferimento dati per l'elenco di directory ( lso dircomandi).

Oppure il tuo client non è a conoscenza del suo indirizzo IP esterno e fornisce invece un indirizzo interno al server (in PORTcomando), che il server non è ovviamente in grado di utilizzare.

Vedi il mio articolo Configurazione di rete per la modalità attiva .


Se possibile, è necessario utilizzare una modalità passiva in quanto in genere non richiede alcuna configurazione aggiuntiva sul lato client.

Sfortunatamente il client della riga di comando FTP di Windows (il ftp.exe) non supporta affatto la modalità passiva. Oggi lo rende abbastanza inutile.

Utilizzare invece qualsiasi altro client della riga di comando FTP di Windows. La maggior parte degli altri supporta la modalità passiva.

Ad esempio WinSCP passa alla modalità passiva per impostazione predefinita e è disponibile una guida per convertire lo script FTP di Windows in script WinSCP .

(Sono l'autore di WinSCP)


Funziona su qualsiasi versione di Windows (da XP). Che errore ricevi? Valuta di porre una nuova domanda separata con maggiori dettagli.
Martin Prikryl,

Hai bisogno di entrambi winscp.come winscp.exenella stessa cartella. Credo che il messaggio di errore indichi chiaramente che winscp.comcerca winscp.exenella sua cartella. Vedi anche winscp.net/ita/docs/executables
Martin Prikryl il

Np, per favore cancella i commenti.
Martin Prikryl,

4

Ho riscontrato questo problema su un server Windows 2008.

Questo articolo suggerisce di abilitare il servizio gateway livello applicazione. Questo non ha risolto il problema per me.

Ciò che ha risolto il problema è stato l'aggiunta di un'eccezione in Windows Firewall per C: \ Windows \ system32 \ ftp.exe


1
Per impostazione predefinita, il firewall di Windows include ftp.exe nella sua eccezione, ma solo per la rete domestica / aziendale. Assicurati di non essere sulla rete pubblica, altrimenti consenti anche ftp per la rete pubblica.
Jags

1

Stavo riscontrando lo stesso problema con il software POS di terze parti su una macchina Windows 7 che esegue il batch dei dati delle transazioni client su un server SQL.

Ha funzionato bene fino a quando la posizione del client non ha cambiato gli ISP e, quindi, gli indirizzi IP statici. I comandi FTP della riga di comando non hanno funzionato oltre il login iniziale e nessuno dei rimedi che ho trovato online o questo thread ha funzionato.

Solo per i calci, ho ricreato la regola FTP nel firewall, un router / firewall D-Link cheapo e viola, sembra funzionare di nuovo.


0

Problema FTP

Porte aperte su NSG azzurro e firewall del server: 21,20,4000-40009,990,14147

Problema: il client non può connettersi a ftp dalla riga di comando e Powershell

Siamo in grado di connetterci con testuser ma non siamo in grado di vedere la directory / Elenco

Wireshark installato sul server e sul mio laptop per acquisire i pacchetti Creato un filtro su WireShark con "ftp" e "IP" L'acquisizione di pacchetti non indica il tempo è la modalità passiva o attiva e l'IP di origine è corretto. (configuriamo IP primario e IP secondario sul server)

Abbiamo scoperto che la connessione ftp non funziona dal prompt dei comandi. il tentativo di avviare una connessione a ftp.abcd.com che si stava risolvendo in 11.22.33.44 e non nell'effettivo server FTP 44.33.22.11 Gli indirizzi IP 11.22.33.44 e 44.33.22.11 sono entrambi configurati sulla stessa macchina. Tuttavia, il DNS si stava risolvendo sull'IP FTP secondario anziché su Primario

Inizialmente, abbiamo anche scoperto che le connessioni FTP a 11.22.33.44 funzionavano bene e queste connessioni erano connessioni attive. Non siamo riusciti a vedere che la modalità passiva funziona qui. Inoltre, mentre si avvia la connessione a 11.22.33.44 dal comando Commad, la sessione si blocca dopo aver dato il comando 'dir', ma lo stesso funziona con altri client ftp come FileZilla e Winscp.

Ho provato a provare con WinSCP e FileZilla e ho visto che le connessioni in modalità passiva funzionano bene e Active non è un comportamento previsto. Abbiamo verificato il motivo per cui il comando 'dir' non funziona dai dispositivi dopo l'autenticazione riuscita, abbiamo visto che il firewall di Windows sta bloccando la connessione. Abbiamo disattivato il firewall e tutto ha iniziato a funzionare come previsto. Ho controllato lo stesso da parte mia dopo aver creato la regola del firewall, i problemi sono stati risolti. Esisteva un sistema che anche dopo aver disabilitato il firewall era bloccato nell'elenco delle directory, questo potrebbe essere un problema all'interno di quel sistema o le connessioni sono state bloccate da un fattore esterno. Dal momento che dopo aver disabilitato la maggior parte di noi è in grado di lavorare bene.

le impostazioni devono essere eseguite sulla macchina Andare su Pannello di controllo → Windows Firewall → Impostazioni avanzate → Regole in entrata Fare doppio clic sulla colonna Nome per ordinare per nome Scorrere verso il basso fino a visualizzare due regole chiamate "Programma di trasferimento file"; questi erano impostati su Blocca sul mio PC (grande cerchio rosso con una linea che lo attraversava) Fai doppio clic sulla regola Nella scheda Generale, in Azione, imposta su Consenti la connessione Fai clic su OK


Questo è ciò che dice già la risposta di @Keljo (in realtà hai copiato la sua risposta).
Martin Prikryl,
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.