La fonction FTP en ligne de commande ne fonctionne pas


12

J'utilise Windows 7 et j'ai plusieurs applications client FTP fonctionnant sans problème. Cependant, lorsque j'utilise le FTP en ligne de commande, je peux me connecter, me connecter (après avoir entré le nom d'utilisateur et le mot de passe), mais il est toujours déconnecté lorsque la commande dir ou ls est utilisée. La réponse est:

Connexion fermée par l'hôte distant.

Comment puis-je résoudre ce problème?


Ouvrez les ports 20, 21 de votre pare-feu.
Sean Perkins

Réponses:


13

Vous verrez généralement ce type de chose se produire lorsque le serveur tente de se reconnecter mais ne peut pas. FTP utilisait à l'origine deux canaux TCP . L'un était pour les commandes et l'autre pour le transfert de données. Lorsque vous exécutez la commande dir, elle utilise un canal de données. Le canal de données est établi à la demande et le serveur essaie de se reconnecter.

C'est probablement bloqué par votre routeur ou votre pare-feu Windows. Vous avez besoin d'un client qui prend en charge le mode PASV .

Vous pouvez activer le mode PASV dans Internet Explorer . Ou utilisez un autre client. Je ne sais pas si la version en ligne de commande peut utiliser le mode PASV. C'est un client très basique.


Merci, Matt. Je pensais que le client FTP en ligne de commande utilisait le mode passif par défaut, mais je viens de trouver plusieurs articles disant que le FTP en ligne de commande exclut en fait le mode passif. IE fonctionne toujours bien sur ma machine pour FTP. Je veux juste utiliser la ligne de commande pour examiner certaines données brutes d'un serveur FTP.
Hong

À titre expérimental, vous pouvez voir si l'activation ou la désactivation de PASV dans Internet Explorer fait une différence .. ou donne une erreur similaire ou identique.
barlop

1
ftp> PASV - Commande non valide. (Windows 7 Ent.). Cette réponse est exactement ce qui se passe au travail.
Bratch

6
il faut que ce soit QUOTE PASV
JosephStyons

5

J'ai eu un problème avec la transmission de fichiers via FTP une fois connecté à la boîte en question. Cela créerait le nom du fichier, mais le fichier était vide. Je l'ai résolu en procédant comme suit:

  • Allez dans Panneau de configuration → Pare-feu Windows → Paramètres avancés → Règles entrantes
  • Double-cliquez sur la colonne Nom pour trier par nom
  • Faites défiler vers le bas jusqu'à ce que vous voyiez deux règles appelées "Programme de transfert de fichiers"; ceux-ci ont été définis sur Bloquer sur mon PC (grand cercle rouge avec une ligne à travers)
  • Double-cliquez sur la règle
  • Sous l' onglet Général , sous Action , définissez sur Autoriser la connexion
  • Cliquez sur OK
  • Faites cela pour l'autre règle

Ça devrait être bien d'y aller maintenant.


Quelles sont les implications de sécurité de faire cela?
Peter Mortensen

Les programmes sur votre PC peuvent désormais utiliser ftp.
Mark Deven

La suppression des règles, puis la connexion via FTP et l'émission de quelque chose comme une commande "dir" (déclenchant le pare-feu Windows pour demander si FTP devrait être autorisé, et recréant les règles, si vous dites Oui) peuvent également aider.
mlvljr

5

Le client de ligne de commande FTP Windows ftp.exeprend uniquement en charge un mode FTP actif.

La configuration du FTP en mode actif peut être fastidieuse de nos jours en raison des pare-feu et des NAT.

Il est probable qu'en raison de votre pare-feu local ou NAT, le serveur n'a pas pu se reconnecter à votre client pour établir une connexion de transfert de données pour la liste ( lsou les dircommandes) du répertoire .

Ou votre client n'est pas au courant de son adresse IP externe et fournit à la place une adresse interne au serveur (dans la PORTcommande), que le serveur n'est évidemment pas en mesure d'utiliser.

Voir mon article Configuration réseau pour le mode actif .


Si possible, vous devez utiliser un mode passif car il ne nécessite généralement aucune configuration supplémentaire côté client.

Malheureusement, le client de ligne de commande FTP Windows (le ftp.exe) ne prend pas du tout en charge le mode passif. Cela le rend assez inutile de nos jours.

Utilisez à la place tout autre client de ligne de commande FTP Windows. La plupart des autres prennent en charge le mode passif.

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

(Je suis l'auteur de WinSCP)


Il fonctionne sur n'importe quelle version de Windows (depuis XP). Quelle erreur obtenez-vous? Pensez à poser une nouvelle question séparée avec plus de détails.
Martin Prikryl

Vous avez besoin des deux winscp.comet winscp.exedans le même dossier. Je crois que le message d'erreur indique clairement que le winscp.comrecherche winscp.exedans son dossier. Voir aussi winscp.net/eng/docs/executables
Martin Prikryl

Np, veuillez supprimer les commentaires.
Martin Prikryl

4

J'ai rencontré ce problème sur un serveur Windows 2008.

Cet article suggère d'activer le service de passerelle de couche application. Cela n'a pas résolu le problème pour moi.

Ce qui a résolu le problème était l'ajout d'une exception dans le pare-feu Windows pour C: \ Windows \ system32 \ ftp.exe


1
Par défaut, le pare-feu Windows inclut ftp.exe dans son exception, mais uniquement pour le réseau domestique / professionnel. Assurez-vous que vous n'êtes pas sur le réseau public, sinon autorisez également ftp pour le réseau public.
Jags

1

Je rencontrais le même problème avec un logiciel de point de vente tiers sur une machine Windows 7 qui regroupe les données de transaction client sur un serveur SQL.

Cela a bien fonctionné jusqu'à ce que l'emplacement du client change de FAI et, par conséquent, d'adresses IP statiques. Les commandes FTP en ligne de commande n'ont pas fonctionné au-delà de la connexion initiale et aucun des remèdes que j'ai trouvés en ligne ou ce fil n'a fonctionné.

Juste pour les coups de pied, j'ai recréé la règle FTP dans le pare-feu, un routeur / pare-feu cheapo D-Link et l'alto, cela semble fonctionner à nouveau.


0

Problème FTP

Ports ouverts sur azure NSG et pare-feu de serveur: 21,20,4000-40009,990,14147

Problème: le client ne peut pas se connecter à ftp à partir de la ligne de commande et de Powershell

Nous pouvons nous connecter avec testuser mais ne pouvons pas voir le répertoire / List

Installation de Wireshark sur le serveur et sur mon ordinateur portable pour capturer les paquets Création d'un filtre sur Wireshark avec «ftp» et «IP» La capture de paquets ne dit pas que la météo est en mode passif ou actif et que l'IP source est correcte. (nous configurons l'IP primaire et l'IP secondaire sur le serveur)

Nous avons constaté que la connexion ftp ne fonctionne pas à partir de l'invite de commande. essayant d'établir une connexion à ftp.abcd.com qui se résolvait à 11.22.33.44 et non au serveur FTP réel 44.33.22.11 Les adresses IP 11.22.33.44 et 44.33.22.11 sont toutes deux configurées sur la même machine. Cependant, le DNS se résolvait à l'adresse IP FTP secondaire au lieu de primaire

Initialement, nous avons également constaté que les connexions FTP à 11.22.33.44 fonctionnaient bien et que ces connexions étaient des connexions actives. Nous n'avons pas pu voir que le mode passif fonctionne ici. De plus, lors de l'établissement de la connexion à 11.22.33.44 à partir de Promad promt, la session se bloque après avoir donné la commande «dir», mais la même chose fonctionne avec d'autres clients ftp comme FileZilla et Winscp.

J'ai essayé de tester avec WinSCP et FileZilla et j'ai pu voir que les connexions en mode passif fonctionnaient bien et pas actives, ce qui est un comportement attendu. Nous avons vérifié pourquoi la commande «dir» ne fonctionnait pas à partir des périphériques après l'authentification réussie, nous avons pu voir que le pare-feu Windows bloquait la connexion. Nous avons désactivé le pare-feu et tout a commencé à fonctionner comme prévu. J'ai vérifié la même chose de mon côté après avoir créé la règle de pare-feu, les problèmes ont été résolus. Il y avait un système qui, même après avoir désactivé le pare-feu, était bloqué dans la liste des répertoires, cela pouvait être un problème dans ce système ou les connexions étaient bloquées par un facteur externe. Depuis la désactivation, la plupart d'entre nous sont en mesure de bien fonctionner.

les paramètres doivent être définis sur la machine. Allez dans Panneau de configuration → Pare-feu Windows → Paramètres avancés → Règles entrantes Double-cliquez sur la colonne Nom pour trier par nom Faites défiler vers le bas jusqu'à ce que vous voyiez deux règles appelées «Programme de transfert de fichiers»; ceux-ci ont été définis sur Bloquer sur mon PC (grand cercle rouge avec une ligne) Double-cliquez sur la règle Sous l'onglet Général, sous Action, définissez sur Autoriser la connexion Cliquez sur OK


C'est ce que dit déjà la réponse de @Keljo (en fait, vous avez copié sa réponse).
Martin Prikryl
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.