FTP mit Windows Kommandozeile - 425 Unable to build connection

mawiti

New member
Hallo alle zusammen,

vor Jahren hatte ich ein Kommandozeilen Script gebaut um Dateien auf einen Webserver zu kopieren.
Zuletzt hatte ich diese Batch vor dem Sommer erfolgreich laufen lassen.

Wenn ich die Batch heute laufen lasse, erhalte ich einen Fehler: 425 Unable to build data connection
Folgendes passiert in meinem Script:

Code:
331 Password required for ftpusrnews
230 User ftpusrnews logged in
ftp> ascii
200 Type set to A
ftp> put Y:\WebSeiten\00_Domains\z_Hoster_DN\0_NaturalStone.ch\www\news-Short.js /httpdocs//news-Short.js
200 PORT command successful
425 Unable to build data connection: Die Wartezeit für die Verbindung ist abgelaufen

Die auf dem Server bestehende Datei wird mit einer Datei mit 0kb Inhalt überschrieben, anstatt rauf geladen zu werden.
Wo muss ich das Problem suchen?
Es hatte lange unverändert funktioniert, bis vor Kurzem...

Vielen Dank für Hilfestellung
Gruss Markus
 
Zuletzt bearbeitet von einem Moderator:

FSC830

Active member
Vor kurzem etwas im LAN geändert?
Ich hatte jahrelang mit einer Fritz keine Probleme, dann habe ich die Fritz gegen ein Modem und eine pfSense getauscht, danach musste ich FTP auf "passive" umstellen.

Gruss
 

mawiti

New member
Vielen Dank FSC830
Habe mein Script auf
WIOTE PASV umgestellt.
Bleibt aber das gleiche, Die geladene Datei bleibt 0 kb...

snief...
 

blurrrr

Well-known member
425 Unable to build data connection: Die Wartezeit für die Verbindung ist abgelaufen
Man sollte auch eher den passive-Mode verwenden und nicht den aktive Mode. Ansonsten "klatscht" der Server mit seinem Data-Port vor die Firewall und da geht es einfach nicht weiter.
Ich hatte jahrelang mit einer Fritz keine Probleme, dann habe ich die Fritz gegen ein Modem und eine pfSense getauscht, danach musste ich FTP auf "passive" umstellen.
Das wundert mich ein wenig, dass es mit einer Fritzbox "einfach so" geklappt hat.

Vielleicht mal in Kurzform zu den beiden Modi:

Active:

Client baut die Verbindung zum FTP-Server auf (Port 21, Control) und teilt ihm seinen Wunschport mit (dynamischer Port), Server (Port 20, Data) baut die Verbindung zum Client auf (dynamischer Port). Da sollte man jetzt schon merken, dass es "einfach so" nicht funktionieren kann. Der Client teilt dem Server zwar einen Port mit, die Firewall der Client-Seite weiss davon nur nix, ergo wird es so auch nicht funktionieren.

(EDIT: Kleine Anmerkung: Zu Modem-Zeiten war das kein Problem, oder heute eben bei Systemen die "direkt" und ohne Dritt-Filter am Netz hängen)

Passive:

Client baut die Verbindung zum FTP-Server auf (Port 21, Control) und der Server teilt dem Client einen Port X (Data) mit, Client baut die Verbindung zum FTP-Server auf (Port X, Data), wobei "Port X" für einen festgelegten Portbereich steht. Somit initiiert der Client "beide" Verbindungen (ausgehend) und die Firewall des Clients kommt der Sache auch nicht in die Quere. Die passive Portrange ist derweil eine Server-Einstellung.

Soviel zur Theorie... jetzt mal zur Praxis:
Es hatte lange unverändert funktioniert, bis vor Kurzem...
Was hat hat sich denn konkret geändert?
 

mawiti

New member
Danke Blurrrr
ich hatte das Script noch anfangs Jahr ohne Probleme verwendet.
Habe meines Wissens nichts verändert. Am Script ganz sicher nicht. Swiscom hatte im Februar den Router ausgetauscht. Aber das Problem ist, dass bei Swisscom kein Mensch etwas von Entwicklung eines Script versteht, die können "nur" ihre eigenen Produkte entsprechend der Gebrauchsanweisung supporten.
Wenn ich mit WINscp arbeite, kann ich die Verbindung herstellen und die Dateien uploaden.
Weil das aber ein Prozess ist, dann ich öfters mache, möchte ich das gerne automatsieren...
Vielen Dank für Gedankenanstösse...

Gruss Markus
 

blurrrr

Well-known member
Weisst Du zufällig, ob der FTP-Server ein explizites FTP"S" erfordert? Ich habe grade keinen FTP-Server zur Hand und habe dafür nie WinSCP genutzt, aber falls es die Logs dort hergeben, könntest Du dort mal schauen, ob sowas angefordert bzw. dann auch genutzt wird. Soweit mir bekannt, kann Windows das von Haus aus nämlich nicht.
Das sieht mir doch ziemlich nach einem Windows aus 🙃
 

mawiti

New member
Guten Abend Blurrrr,

Danke für Deine Informationen.
Mein lokaler PC ist ein Windows PC, das Remote System, auf welches ich die Dateien hochladen will, ist ein Linux System.

Danke für die WinSPC Anleitung.
Hoffe, dass ich noch "schnell" den Fehler in meinem bestehenden Script finde. Denn das Teil möchte ich eigentlich nicht nochmal neu programmieren...

Danke vielmals für Deine Unterstützung.
Gruss Markus
 

blurrrr

Well-known member
Naja, wäre ja vermutlich nur ein bisschen Syntax, die eigentliche Logik dahinter sollte ja theoretisch auch bestehen bleiben. Alternativ geht's natürlich auch via Powershell ("connect-ftp", da gibt es z.B. auch Modi für die Verschlüsselung) 🙃

Btw ggf. hätte sein können: Der PC war als DMZ-Host im Router eingerichtet (oder es wurden Portfreigaben in Richtung PC eingerichtet). Wenn es "vorher" in der Ursprungsversion funktioniert hat (die ja wohl auf "active FTP" ausgerichtet war), dann müsste etwas entsprechendes auch im Router vorhanden gewesen sein.

"Keine" zusätzliche Konfiguration ist nur bei passive-FTP der Fall. Waren vorher entsprechende Freigaben/Weiterleitungen am Router aktiv, so wird es vermutlich auch funktioniert haben. Steht in Deinem Script evtl. noch etwas wie ein "Port" (abseits der 21)? Habe mich damit nie groß beschäftigt, aber Clients (wie z.B. FileZilla) erlauben es auch (extra für active-FTP auf "Client"-Seite) Data-Ports zu konfigurieren.

EDIT: Mal so ganz anders... Hast Du ggf. mal die Möglichkeit einen anderen FTP-Server zu testen (via passive-FTP)? Theoretisch sollte Dein Problem mit der Umstellung auf passive-FTP behoben sein (zumindestens was den Data-Port angeht).

EDIT2: Da die ganze Welt mittlerweile zum Großteil nur noch verschlüsselt miteinander spricht, wirst Du auf kurz oder lang sowieso nicht drum herum kommen, Dein Script entsprechend anzupassen. "ftp.exe" (hab grade nochmal nachgeschaut) scheint wirklich kein SSL/TLS zu können, weswegen Du dann zwangsläufig auf Powershell und Connect-FTP ausweichen musst, oder eben die winscp-Binary im Consolen-Modus nutzen musst (oder irgendwas anderes halt).
 
Zuletzt bearbeitet:

mawiti

New member
Vielen lieben Dank für Deine ausführlichen Informationen.
Werde im Moment die Datei noch manuell hochladen.
Längerfristig werde ich mich dann mit Winspc auseinandersetzen. Das wird aber noch dauern... ;-)
Viele liebe Grüsse
Markus
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
968
Beiträge
14.033
Mitglieder
499
Neuestes Mitglied
John58
Oben