Die Befehlszeilen-FTP-Funktion funktioniert nicht


12

Ich verwende Windows 7 und habe mehrere FTP-Client-Anwendungen, die problemlos funktionieren. Wenn ich jedoch Befehlszeilen-FTP verwende, kann ich mich verbinden und anmelden (nachdem ich Benutzername und Passwort eingegeben habe), aber es wird immer getrennt, wenn der Befehl dir oder ls verwendet wird. Die Antwort lautet:

Verbindung vom Remote-Host geschlossen.

Wie kann ich dieses Problem beheben?


Öffnen Sie die Ports 20, 21 in Ihrer Firewall.
Sean Perkins

Antworten:


13

Normalerweise wird dies passieren, wenn der Server versucht, eine Verbindung zu Ihnen herzustellen, dies jedoch nicht kann. FTP verwendete ursprünglich zwei TCP- Kanäle. Einer war für Befehle und der andere für die Datenübertragung. Wenn Sie den Befehl dir ausführen, wird ein Datenkanal verwendet. Der Datenkanal wird bei Bedarf eingerichtet und führt dazu, dass der Server versucht, eine Verbindung zu Ihnen herzustellen.

Dies wird höchstwahrscheinlich von Ihrem Router oder Ihrer Windows-Firewall blockiert. Sie benötigen einen Client, der den PASV- Modus unterstützt .

Sie können den PASV-Modus in Internet Explorer aktivieren . Oder verwenden Sie einen anderen Client. Ich bin nicht sicher, ob die Befehlszeilenversion den PASV-Modus verwenden kann. Es ist ein sehr einfacher Kunde.


Danke, Matt. Ich dachte, der Befehlszeilen-FTP-Client verwendet standardmäßig den passiven Modus, aber ich habe gerade mehrere Beiträge gefunden, die besagen, dass Windows-Befehlszeilen-FTP den passiven Modus tatsächlich ausschließt. IE funktioniert auf meinem Computer immer gut für FTP. Ich möchte nur die Befehlszeile verwenden, um einige Rohdaten von einem FTP-Server zu untersuchen.
Hong

Als Experiment konnten Sie feststellen, ob das Aktivieren oder Deaktivieren von PASV im Internet Explorer einen Unterschied macht oder einen ähnlichen oder denselben Fehler verursacht.
Barlop

1
ftp> PASV - Ungültiger Befehl. (Windows 7 Ent.). Diese Antwort ist genau das, was bei der Arbeit passiert.
Bratch

6
es muss QUOTE PASV sein
JosephStyons

5

Ich hatte ein Problem mit der Übertragung von Dateien über FTP, nachdem ich in der betreffenden Box angemeldet war. Es würde den Dateinamen erstellen, aber die Datei war leer. Ich habe es folgendermaßen gelöst:

  • Gehen Sie zu Systemsteuerung → Windows-Firewall → Erweiterte Einstellungen → Eingehende Regeln
  • Doppelklicken Sie auf die Spalte Name , um nach Namen zu sortieren
  • Scrollen Sie nach unten, bis Sie zwei Regeln sehen, die als "Dateiübertragungsprogramm" bezeichnet werden. Diese wurden auf meinem PC auf Block eingestellt (großer roter Kreis mit einer Linie durch).
  • Doppelklicken Sie auf die Regel
  • Stellen Sie auf der Registerkarte Allgemein unter Aktion die Option Verbindung zulassen ein
  • Klicken OK
  • Tun Sie dies für die andere Regel

Es sollte gut sein, jetzt zu gehen.


Was sind die Sicherheitsauswirkungen davon?
Peter Mortensen

Programme auf Ihrem PC können jetzt FTP verwenden.
Mark Deven

Das Löschen der Regeln, das anschließende Herstellen einer Verbindung über FTP und das Ausgeben eines Befehls "dir" (Auslösen der Windows-Firewall, um zu fragen, ob FTP zulässig sein soll, und Neuerstellen der Regeln, wenn Sie "Ja" sagen) kann ebenfalls hilfreich sein.
mlvljr

5

Der Windows-FTP-Befehlszeilenclient ftp.exeunterstützt nur einen aktiven FTP-Modus.

Das Einrichten des FTP im aktiven Modus kann heutzutage aufgrund von Firewalls und NATs umständlich sein.

Aufgrund Ihrer lokalen Firewall oder Ihres NAT konnte der Server wahrscheinlich keine Verbindung zu Ihrem Client herstellen, um eine Datenübertragungsverbindung für die Verzeichnisliste ( lsoder dirBefehle) herzustellen .

Oder Ihr Client kennt seine externe IP-Adresse nicht und stellt dem Server (im PORTBefehl) stattdessen eine interne Adresse zur Verfügung , die der Server offensichtlich nicht verwenden kann.

Siehe meinen Artikel Netzwerkkonfiguration für den aktiven Modus .


Wenn möglich, sollten Sie einen passiven Modus verwenden, da normalerweise keine zusätzliche Einrichtung auf einer Clientseite erforderlich ist.

Leider unterstützt der Windows-FTP-Befehlszeilenclient (the ftp.exe) den passiven Modus überhaupt nicht. Es macht es heutzutage ziemlich nutzlos.

Verwenden Sie stattdessen einen anderen Windows-FTP-Befehlszeilenclient. Die meisten anderen unterstützen den passiven Modus.

Beispielsweise verwendet WinSCP standardmäßig den passiven Modus, und es steht eine Anleitung zum Konvertieren von Windows-FTP-Skripten in WinSCP-Skripte zur Verfügung .

(Ich bin der Autor von WinSCP)


Es funktioniert unter jeder Windows-Version (seit XP). Welchen Fehler bekommen Sie? Stellen Sie eine neue separate Frage mit weiteren Details.
Martin Prikryl

Sie benötigen beide winscp.comund winscp.exeim selben Ordner. Ich glaube, die Fehlermeldung sagt eindeutig, dass das in seinem Ordner winscp.comsucht winscp.exe. Siehe auch winscp.net/eng/docs/executables
Martin Prikryl

Np, bitte löschen Sie die Kommentare.
Martin Prikryl

4

Ich habe dieses Problem auf einem Windows 2008-Server festgestellt.

In diesem Artikel wird vorgeschlagen , den Application Layer Gateway Service zu aktivieren. Dies hat das Problem für mich nicht behoben.

Das Problem wurde durch Hinzufügen einer Ausnahme in der Windows-Firewall für C: \ Windows \ system32 \ ftp.exe behoben


1
Standardmäßig enthält die Windows-Firewall die Ausnahme ftp.exe, jedoch nur für das Heim- / Arbeitsnetzwerk. Stellen Sie sicher, dass Sie sich nicht in einem öffentlichen Netzwerk befinden. Andernfalls lassen Sie FTP auch für ein öffentliches Netzwerk zu.
Jags

1

Ich hatte das gleiche Problem mit der POS- Software von Drittanbietern auf einem Windows 7-Computer, auf dem Client-Transaktionsdaten auf einen SQL-Server übertragen werden.

Es funktionierte einwandfrei, bis der Client-Standort die ISPs und damit die statischen IP-Adressen änderte . Befehlszeilen-FTP-Befehle funktionierten nicht über die anfängliche Anmeldung hinaus und keine der Abhilfemaßnahmen, die ich online gefunden habe, oder dieser Thread funktionierten.

Nur zum Spaß habe ich die FTP-Regel in der Firewall neu erstellt, einen billigen D-Link-Router / eine billige D-Link-Firewall , und Viola, es scheint wieder zu funktionieren.


0

FTP-Problem

Öffnen Sie Ports auf Azure NSG und Server-Firewall: 21,20,4000-40009,990,14147

Problem: Der Client kann über die Befehlszeile und Powershell keine Verbindung zu FTP herstellen

Wir können eine Verbindung mit dem Testbenutzer herstellen, aber das Verzeichnis / die Liste nicht sehen

Wireshark wurde auf dem Server und auf meinem Laptop installiert, um Pakete zu erfassen. Auf Wireshark wurde ein Filter mit "ftp" und "IP" erstellt. Die Paketerfassung gibt nicht an, ob das Wetter passiv oder aktiv ist und die Quell-IP korrekt ist. (Wir konfigurieren die primäre IP und die sekundäre IP auf dem Server.)

Wir haben festgestellt, dass die FTP-Verbindung an der Eingabeaufforderung nicht funktioniert. Der Versuch, eine Verbindung zu ftp.abcd.com herzustellen, wurde in 11.22.33.44 und nicht zu den tatsächlichen IP-Adressen des FTP-Servers 44.33.22.11 aufgelöst. 11.22.33.44 und 44.33.22.11 sind beide auf demselben Computer konfiguriert. Der DNS wurde jedoch in die sekundäre FTP-IP anstelle der primären aufgelöst

Anfangs stellten wir auch fest, dass die FTP-Verbindungen zu 11.22.33.44 einwandfrei funktionierten und diese Verbindungen aktive Verbindungen waren. Wir konnten nicht sehen, dass der passive Modus hier funktioniert. Auch beim Einleiten der Verbindung zu 11.22.33.44 von Commad Promt friert die Sitzung ein, nachdem Sie den Befehl 'dir' eingegeben haben. Dies funktioniert jedoch auch mit anderen FTP-Clients wie FileZilla und Winscp.

Ich habe versucht, mit WinSCP und FileZilla zu testen, und festgestellt, dass Verbindungen im passiven Modus einwandfrei funktionieren und Active nicht das erwartete Verhalten ist. Wir haben überprüft, warum der Befehl 'dir' nach der erfolgreichen Authentifizierung auf den Geräten nicht funktioniert. Wir haben festgestellt, dass die Windows-Firewall die Verbindung blockiert. Wir haben die Firewall deaktiviert und alles begann wie erwartet zu funktionieren. Nachdem ich die Firewall-Regel erstellt hatte, überprüfte ich dies auch. Probleme wurden behoben. Es gab ein System, das auch nach dem Deaktivieren der Firewall bei der Verzeichnisliste stecken blieb. Dies könnte ein Problem innerhalb dieses Systems sein oder die Verbindungen werden durch einen externen Faktor blockiert. Denn nach dem Deaktivieren können die meisten von uns gut arbeiten.

Die Einstellungen müssen auf dem Computer vorgenommen werden. Gehen Sie zu Systemsteuerung → Windows-Firewall → Erweiterte Einstellungen → Eingehende Regeln. Doppelklicken Sie auf die Spalte Name, um nach Namen zu sortieren. Scrollen Sie nach unten, bis Sie zwei Regeln mit dem Namen "Dateiübertragungsprogramm" sehen. Diese wurden auf meinem PC auf Blockieren gesetzt (großer roter Kreis mit einer Linie durch). Doppelklicken Sie auf die Regel. Klicken Sie auf der Registerkarte Allgemein unter Aktion auf Verbindung zulassen. Klicken Sie auf OK


Dies ist, was die Antwort von @Keljo bereits sagt (tatsächlich haben Sie seine / ihre Antwort kopiert).
Martin Prikryl
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.