„Verbindung vom Peer zurückgesetzt“ auf LFTP beim Hochladen von Dateien

„Verbindung vom Peer zurückgesetzt“ auf LFTP beim Hochladen von Dateien

Ich arbeite an einem Projekt, bei dem mehrere Raspberry Pis mehrmals täglich Sensordaten sammeln und in mehreren Dateien protokollieren. Ich wollte ein kleines Skript schreiben, um all diese Dateien am Ende des Tages mit crontab auf einen FTP-Server hochzuladen. Also schrieb ich ein Skript mit lftp, das zunächst funktionierte, später aber Fehler anzeigte.

Unten sehen Sie das Skript und die ausführliche Ausgabe. Wie kann ich das Problem beheben?

    #!/bin/bash
    HOST='ftp://xyz.com'
    USER='xxxxxx'
    PASS='xxxxxx'
    TARGETFOLDER='/home/xxxx'
    SOURCEFOLDER='/home/pi/yyyy'

    lftp -f "
    open $HOST
    user $USER $PASS
    debug -o lftp_debug.txt
    lcd $SOURCEFOLDER
    mirror --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER
    bye
    "

Ausgabe:

---- Connecting to xyz.com (xx.xx.xx.xx) port 21   
<--- 220 (vsFTPd 3.0.3)   
---> FEAT    
<--- 211-Features:   
<---  EPRT    
<---  EPSV    
<---  MDTM    
<---  PASV   
<---  REST STREAM    
<---  SIZE 
<---  TVFS
<--- 211 End    
---> USER XXXX  
<--- 331 Please specify the password.    
---> PASS XXXX   
<--- 230 Login successful.   
---> PWD   
<--- 257 "/home/XXXX" is the current directory   
---> MKD /home   
<--- 550 Create directory operation failed.    
---> MKD /home/XXXX
<--- 550 Create directory operation failed.
---- CWD path to be sent is `/home/XXXX'  
---> CWD /home/XXXX   
<--- 250 Directory successfully changed.    
---> PASV    
**** control-socket: Connection reset by peer
---- Closing data socket   
---- Closing control socket 

##AKTUALISIERUNG 2##

Das Lustige ist, wenn ich mich mit demselben Benutzername und Passwort über den Befehl „FTP“ beim gleichen FTP-Server anmelde, funktioniert es einwandfrei. Wenn ich mich jedoch lftpmit demselben Benutzername und Passwort anmelde, kann ich mich zwar beim Server anmelden, aber sobald ich lsden Befehl eingebe, wird die folgende Ausgabe angezeigt.

lftp [email protected]:~> ls
`ls' at 0 [Delaying before reconnect: 24]

##AKTUALISIERUNG 3##

Ich habe stattdessen versucht, SFTP zu verwenden, und es hat einwandfrei funktioniert. Ich hoffe, das spart jemandem Zeit.

Antwort1

Verwenden Sie kein FTP. Ihr Problem hängt wahrscheinlich mit der allgemeinen Verwirrung bezüglich der Verbindungsrichtung bei FTP zusammen. FTP verwendet zwei Ports: eine Befehlsverbindung und eine Datenverbindung. Traditionell verlief die Befehlsverbindung vom Client zum Server und die Datenverbindung vom Server zum Client!

PASV ist das Gegenteil; es weist den Server an, auf die Datenverbindung vom Client zu warten und dem Client seine Portnummer mitzuteilen. Es sieht so aus, als ob dieses (für viele unerwartete) Verhalten Ihr Problem ist.

Meiner Meinung nach ist die weitere Verwendung von FTP jedoch heutzutage keine gute Alternative. Es ist sowohl sicherheitstechnisch als auch protokolltechnisch einfach veraltet.

Sie haben mehrere Alternativen zu FTP. Wenn Sie Authentifizierung verwenden, ist scp/sftp eine gute Alternative. Es erfordert genau einen Port, ist authentifiziert und verschlüsselt.

Wenn Sie anonyme Übermittlungen benötigen, ist http(s) eine gute Alternative. Entweder über eine POST-Anfrage oder mit WebDAV. HTTP kannAuchmuss für die Verwendung von Authentifizierung eingerichtet sein und kann mit TLS (https) verschlüsselt werden. Außerdem wird nur ein einziger Kanal für Daten und Befehle geöffnet.

FTP ist ein 40 Jahre altes Protokoll. Es wird immer seltener verwendet und erhält daher nicht so viel Aufmerksamkeit wie beliebtere Webserver und SSH-Server. Daher besteht eine höhere Wahrscheinlichkeit, dass im Quellcode schwerwiegende Sicherheitslücken bestehen bleiben.

Darüber hinaus wäre der Befehl für SCP viel einfacher: scp * $user@$host:$targetfolder– und Sie könnten eine schlüsselbasierte Authentifizierung verwenden, um Passwörter im Skript zu vermeiden!

verwandte Informationen