web-dev-qa-db-fra.com

Comment utiliser le mode FTP passif dans l'invite de commande Windows?

Dans Ubuntu, ftp -p pour le mode passif fonctionne bien. 

Comment faire la même chose sous Windows? 

J'ai essayé avec quote pasv mais j'obtiens l'erreur suivante:

230 OK. Current restricted directory is /
ftp> quote pasv 
227 Entering Passive Mode (31,170,167,221,116,239)    
ftp> cd os    
250 OK. Current directory is /os    
ftp> dir    
500 I won't open a connection to 10.23.16.248 (only to 113.193.128.177)    
425 No data connection    
ftp>

Mon pare-feu est désactivé.

41
user2737208

Windows ne supporte pas réellement le mode passif.

Vous pouvez envoyer la commande au serveur de trois manières différentes, mais cela n'active pas le mode passif du côté du client Windows. 

Ces arguments permettent d’envoyer diverses commandes et pasv n’a pas été pensé par Microsoft lorsqu’il l’a écrit.

Vous devrez trouver un logiciel tiers, tel que WinSCP, prenant en charge l'utilisation de la ligne de commande et l'utiliser à la place du logiciel natif Windows.

38
transilvlad

Le client de ligne de commande FTP Windows (ftp.exe) ne prend pas en charge le mode passif, quelle que soit la version de Windows. Cela le rend assez inutile de nos jours à cause des pare-feu et des NATs omniprésents.

L'utilisation du quote pasv ne vous aidera pas. Il ne fait que passer le serveur au mode passif, mais pas le client.


Utilisez plutôt un autre client de ligne de commande FTP Windows. La plupart des autres modes de support passif.

Par exemple, WinSCP utilise par défaut le mode passif et il existe un guide pour convertir le script FTP Windows en script WinSCP .

(Je suis l'auteur de WinSCP)

35
Martin Prikryl

Bien que cela ne réponde pas directement à la question sur la ligne de commande, utilisez Windows Explorer ftp: // nom_utilisateur @ serveur

cela utilisera le mode passif par défaut

Pour la ligne de commande, le mode actif est le mode par défaut

9
Hammad

La commande quote PASV n'est pas une commande du programme ftp.exe, c'est une commande adressée au serveur FTP qui demande un port d'ordre élevé pour le transfert de données. Un transfert passif est un transfert dans lequel les données FTP sur ces ports d'ordre élevé tout en maintenant le contrôle dans les ports inférieurs.

Le programme windows ftp.exe peut être utilisé pour envoyer les commandes du serveur FTP afin d’effectuer un transfert de données passif entre deux serveurs FTP. Une installation Windows standard n'aura pas, et ne devrait probablement pas, faire en sorte que le service de serveur FTP s'exécute comme un noeud final pour les transferts passifs. Par conséquent, si des transferts passifs sont nécessaires avec une boîte de dialogue Windows standard, une solution autre que ftp.exe est nécessaire, telle que l'envoi de FTP à localhost car l'une des connexions ne fonctionne pas dans la plupart des environnements Windows. 

Vous pouvez effectuer un transfert FTP passif entre deux hôtes différents (mais pas deux connexions sur le même hôte) comme suit:

Ouvrez deux invites, utilisez l'une pour connecter ftp.exe à votre serveur FTP source et une autre pour vous connecter ftp.exe à votre serveur FTP de destination. 

Etablissez maintenant une connexion passive entre les serveurs en utilisant les commandes brutes PASV et PORT. La commande quote PASV répondra avec une adresse IP/port dans Ellipsis. Utilisez ces données pour la commande quote PORT <data>. Votre liaison passive est maintenant établie en supposant que les pare-feu n’ont pas bloqué un ou plusieurs des quatre ports (2 pour le contrôle FTP, 2 pour les données FTP).

Ensuite, démarrez la réception des données avec la commande quote STOR <filename> sur le serveur FTP de réception, puis envoyez la commande de contrôle quote RETR <filename> au serveur FTP source.

alors pour moi:

client 1
> ftp.exe server1
ftp> quote PASV
227 Entering Passive Mode (10,0,3,1,54,161)

client 2 
> ftp.exe server2
ftp> quote PORT 10,0,3,1,54,54,161
ftp> quote STOR myFile

client 1
ftp> quote RETR myFile

Cavet: Je me connecte à d'anciens serveurs FTP YMMV

6
Bruce Peterson

Le client CURL prend en charge le protocole FTP et fonctionne en mode passif. Obtenez la version Download WITHOUT SSL et vous n’avez pas besoin de bibliothèques openssl.dll. Juste une application en ligne de commande curl.exe.
http://www.paehl.com/open_source/?CURL_7.35.0

curl.exe -T c:\test\myfile.dat ftp://ftp.server.com/some/folder/myfile.dat --user myuser:mypwd

PuTTY psftp.exe est un autre exemple, mais l’invite de vérification de la clé du serveur nécessite une astuce. Cette ligne de commande entre NO pour la clé de signification Prompt n'est pas stockée dans le registre, mais uniquement pour le moment. Vous avez besoin d'un fichier de script externe, mais cela peut parfois s'avérer utile si vous copiez plusieurs fichiers de haut en bas.
http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/download.html

echo n | psftp.exe ftp.server.com -l myuser -pw mypwd -b script.txt

script.txt (toute commande ftp peut être saisie)

put "C:\test\myfile.dat" "/some/folder/myfile.dat"
quit
6
Whome

C'est un problème commun . lorsque nous commençons la connexion ftp, seule l’ip externe ouvre le port pour la connexion pasv. mais l'ip derrière le NAT n'ouvre pas la connexion, donc la connexion passive échoue avec la commande PASV

nous devons spécifier que lors de l'ouverture de la connexion connexion ouverte avec 

ftp -p {hôte}

0
Ashutosh Raj

Si vous utilisez Windows 10, installez Windows Subsystem pour Linux, WSL et Ubuntu.

$ ftp 192.168.1.39
Connected to 192.168.1.39.
............
230 Logged in successfully
Remote system type is MSDOS.
ftp> passive
Passive mode on.
ftp> passive
Passive mode off.
ftp>
0
JaeMann Yeh