Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8409[/thread]

Dateitransfer von FTPS (FTP over TLS/SSL) Server

Leser: 2


<< >> 10 Einträge, 1 Seite
PaulMC
 2006-10-12 14:15
#70708 #70708
User since
2006-10-12
3 Artikel
BenutzerIn
[default_avatar]
Hallo,

Ich versuche, mit Perl Daten auf und von einem FTP Server zu transferieren. Der Server nutzt als Protokoll FTP mit TLS/SSL (Implicit).

Ich habe mir nun das Modul Net::FTPSSL angesehen. Der Login auf dem Server funktioniert auch. Aber leider kann ich keine Daten transferieren.

Folgenden Code habe ich dafür geschrieben:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use Net::FTPSSL;
use Mail::Sendmail;
use File::Copy;

my($ftps);

$ftps = Net::FTPSSL->new("ftp.server.de",Port => 990,Encryption => "I",Timeout => 2, Debug => 5, Passive => "0") or die "Error connecting to FTP Server for ConnectionTest: $@";
$ftps->login("username","*******") or die "Can't Login to Server: ", $ftps->last_message;
$ftps->cwd("TEST") or die "Can't change directory: ",
$ftps->last_message;
$ftps->get("test.xml") or die "Can't save file to server: ",
$ftps->last_message;
$ftps->quit();


Wenn ich das script nun laufen lasse, bekomme ich folgende Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<<< 227 Entering Passive Mode (62,128,7,123,4,11).
>>> USER username
<<< 331 Password required for username.
>>> PASS ******
<<< 230 Login OK. Proceed.
>>> CWD TEST
<<< 250 Folder changed to "/TEST".
>>> PBSZ 0
<<< 200 PBSZ Command OK. Protection buffer size set to 0.
>>> PROT P
<<< 200 PROT Command OK. Using Private data connection
>>> PASV

connect: Unknown error at d:/Perl/site/lib/Net/SSLeay/Handle.pm line 166.


Wenn ich es richtig verstehe, versucht das Script die Daten im Passive Mode zu übertragen. Der Server kann das nicht und damit bricht die Verbindung ab.
Ich habe auch versucht den Passive Mode aus zu schalten, aber das brachte leider keinen Erfolg.

Kann mir bitte jemand weiter helfen. Ich habe leider keine Ideen mehr, woran dies liegen kann. Mache ich vielleicht irgendwo einen dummen Fehler?

Vielen Dank schon mal,
Gruss
Paul
renee
 2006-10-12 14:52
#70709 #70709
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Den Passive Mode kann man bei dem Modul nicht auschalten. Da musst Du wohl mal mit dem Autor in Verbindung treten... Vielleicht ist auch CPAN:Net::SFTP etwas für Dich.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
nepos
 2006-10-12 15:32
#70710 #70710
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Sicher, dass der Server keinen Passive Mode kann?
bloonix
 2006-10-12 15:57
#70711 #70711
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=nepos,12.10.2006, 13:32]Sicher, dass der Server keinen Passive Mode kann?[/quote]
Das wäre einfach zu Testen...

Code: (dl )
1
2
3
4
5
6
ftp <server>
username:
password:

passive on
dir


Wenn keine Antwort zurückkommt oder die Session auf ein Timeout läuft,
dann scheint kein Passive-FTP konfiguriert worden sein oder aber da
funkt eine Firewall zwischen.

SFTP basiert auf SSH und es gibt leider keine zufriedenstellende
chroot-Lösung, eventuell mit SCP_only, aber auch das ist mit einigen
Problemchen behaftet... denn man möchte zum Beispiel kein bin, lib
Verzeichnis im docroot haben, falls jemand darauf Zugang hat...\n\n

<!--EDIT|opi|1160654300-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
bloonix
 2006-10-12 16:04
#70712 #70712
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
-gelöscht, da ich falsch lag-\n\n

<!--EDIT|opi|1160657305-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
PaulMC
 2006-10-12 17:57
#70713 #70713
User since
2006-10-12
3 Artikel
BenutzerIn
[default_avatar]
Erstmal vielen Dank für die rasche Hilfe.

Ich habe nun mal mit dem Owner des FTPs Servers gesprochen. Laut seiner Aussage ist sowohl passive als auch active freigeschaltet. Sollte also vom Server her funktionieren.

Wie bekomme ich heraus, ob es an einer Firewall liegt?
bzw. wie sieht da der technische Hintergrund aus. Ich würde das gerne verstehen.
nepos
 2006-10-12 18:11
#70714 #70714
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Technischer Hintergrund ist in etwa folgender:
FTP nutzt 2 Kanaele zum Uebertragen von Daten und Kommandos. Port 21 ist fuer die Kommandos, Daten werden mittels Port 20 uebertragen.
Beim aktiven Modus ist es so, dass du dem Server ein Kommando schickst, auf das er dir Daten zuruecksenden soll. Die Verbindung fuer die Daten wird dann vom Server zu dir aufgebaut. Bei einer Firewall scheitert dies natuerlich, da diese ja Verbindungsanfragen von aussen erstmal blockt (aber aktives FTP geht auch mit Firewall).
Deshalb nutzt man hinter Firewalls oder beim Einsatz von NAT meist passives FTP. Dabei sagt der Server dem Client, wo er die Daten abholen kann. Der Client baut dann die Datenverbindung auf und holt sich die Daten. Da das also von innen nach aussen ablaeuft, blockt die Firewall sowas normal nicht.

Ich hoffe, ich hab das nun halbwegs korrekt beschrieben :)

Obs nun an der Firewall liegt, puh, dazu muesstest du dir ansehen, was dort geblockt wird. Wie du das machst, das haengt von deiner Firewall ab. Unter Linux bei iptables muesste man LOG-Regeln in die Chains einbauen, sofern man sowas nicht eh schon drin hat.\n\n

<!--EDIT|nepos|1160662422-->
PaulMC
 2006-10-12 19:39
#70715 #70715
User since
2006-10-12
3 Artikel
BenutzerIn
[default_avatar]
Ich noch mal!

Noch mal Vielen Dank, ich denke ich habe das Prinzip nun verstanden.

Ich habe nun mal die Verbindung zu FTPs Server über eine andere Internetverbindung versucht. Siehe da! Es funktioniert!

Das bedeutet, dass es definitiv nicht an Perl sondern an einer Firewall liegt. Jetzt muss ich mich mit den Admins der Firewall ein wenig rumschlagen um entsprechende Änderungen zu verlangen.

Könnt Ihr mir vielleicht noch mal kurz helfen, was genau ich beantragen muss. Ich möchte mich da so genau wie möglich ausdrücken.

merci
gruss,
paul
bloonix
 2006-10-12 21:22
#70716 #70716
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=PaulMC,12.10.2006, 17:39]Das bedeutet, dass es definitiv nicht an Perl sondern an einer Firewall liegt.[/quote]
Hallo,

du bist aber fix bei solchen Vermutungen! :-)

Was heißt eine andere Internetverbindung? Wie hast du versucht, dich
gegen den Server zu verbinden? Aus dem selben Unternehmensnetzwerk,
nur ein anderer Client? Von einem Kumpel aus? Hat der andere Rechner
den gleichen FTPS-Client wie du? Unterstützen sie die gleichen
Verschlüsselungen?

Grundsätzlich sollte ein

telnet <ip> <port>

FTP-Data:    20
FTP-CMD:     21
SSH + SFTP:  22
FTPS-Data:   989
FTPS-CMD:    990


ausprobiert werden. Wenn das funktioniert, sind die Ports zunächst einmal
frei! Bei Active- und Passive FTP wird dann noch ein höherer Port für den
Datenaustausch benötigt, wofür die Firewall eingerichtet sein muss.
Das Zauberwort lautet hier Connection Tracking!

Gruss,
opi\n\n

<!--EDIT|opi|1160675223-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
nepos
 2006-10-12 21:44
#70717 #70717
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wenn das deine Admins machen, sollten die das schon wissen, was sie freischalten muessen. Ich denke, passives FTP sollte reichen, das is auch einfacher einzurichten als aktives FTP ;)
<< >> 10 Einträge, 1 Seite



View all threads created 2006-10-12 14:15.