Raspberry Pi FTP-Server installieren

von cooper.bin
veröffentlicht am 23.03.2024 aktualisiert am 23.03.2024

FTP, das für File Transfer Protocol steht, ist ein etabliertes Netzwerkprotokoll welches speziell für die Übertragung von Dateien zwischen einem Client und einem Server entwickelt wurde. Das FTP Protokoll ermöglicht es Dateien zuverlässig und effizient auszutauschen, wobei die Einsatzmöglichkeiten eines FTP-Servers vielfältig sind. Häufig wird FTP eingesetzt, um Webseiteninhalte auf Webservern zu aktualisieren oder um Dateien auf Servern für Downloads bereitzustellen. Darüber hinaus kann ein FTP-Server auch in privaten Netzwerken, beispielsweise für den Austausch von Dateien zwischen Computern, genutzt werden.

Ich für meinen Teil nutze meinen lokalen Server für verschiedenste Anwendungen. Dank des FTP-Servers ist es mir möglich, Dateien einfach zu bearbeiten und problemlos zwischen verschiedenen Systemen zu übertragen. Insbesondere die direkte Bearbeitung von Dateien auf dem Server ist sehr oft ziemlich praktisch.

Zum Kapitel springen Informationen

In diesem Tutorial zeige ich, wie man einen konfigurierbaren FTP-Server aufsetzt. Ein Vorteil dieses Ansatzes ist es, verschiedene Benutzerkonten mit verschiedenen Rechten auszustatten. Diese Rechtr können so konfiguriert werden, bestimmte Nutzer oder Gruppen Zugang zu bestimmten Ordnern haben. Je nach Anforderung kann dies sehr gezielt eingestellt werden.

Um auf den sFTP-Server zuzugreifen, verwende einfach die Benutzerdaten deines Raspberry Pi. Hier ist ein Beispiel für die Struktur der Zugangsdaten:

Feld Beispielwert
Host IP-Adresse deines Raspberry Pis
Benutzer pi
Passwort raspberry
Port 22

Solltest du einen FTP-Server für bestimmtere Zwecke nutzen, kann du die folgende Anleitung durchführen.

Zum Kapitel springen Installation

Für meine Zwecke setze ich die Software ProFTPD ein. ProFTPD ist ein vielseitiger, hochkonfigurierbarer FTP-Server, der für seine Leistungsfähigkeit und Sicherheit bekannt ist. Dank einer breiten Palette von Modulen unterstützt er eine Vielzahl von Funktionen und detaillierte Zugriffskontrollen. Totz der Flexibilität ist ProFTPD in einer Grundkonfiguration sehr einfach einzurichten. Diese Eigenschaften machen ProFTPD zu einer beliebten Wahl für Administratoren, die einen zuverlässigen und anpassbaren FTP-Server suchen.

Um ProFTPD und die notwendigen Pakete zu installieren reicht in erster Instanz ein einfacher Befehl in der Konsole:

sudo apt install proftpd-basic

Zum Kapitel springen Konfiguration

Nachdem die Software installiert wurde, werden wir eine eigene Konfigurationsdatei erstellen. Ein Vorteil dieser Methode ist, dass unsere Konfiguration auch nach Softwareaktualisierungen unverändert bleibt. Das bietet uns Sicherheit in der Verwendung. Die Konfigurationsdateien, die wir im Verzeichnis /etc/proftpd/conf.d ablegen, werden von der Software automatisch erkannt und eingebunden. Dies vereinfacht die Konfiguration und stellt sicher, dass unsere Einstellungen stets berücksichtigt werden.

Wir legen also zunächst eine eigene Konfigurationsdatei an:

sudo nano /etc/proftpd/conf.d/myftp.conf

Die Konfiguration bekommt dann den folgenden Inhalt:


# Das Home-Verzeichnis ~ ist das Stammverzeichnis der Benutzer in den Gruppen myftp und root

DefaultRoot ~ myftp,root

# Ein Login auf den FTP-Server wird nur Benutzern der Gruppe myftp erlaubt
<Limit LOGIN>
    DenyGroup !myftp
</Limit>

Speichert die Datei anschließend mit STRG + O und schließt den Editor mit STRG + X.
Damit die Änderung und damit auch die Konfiguration wirksam wird, muss der FTP-Server einmal neugestartet werden:

sudo systemctl restart proftpd

Zum Kapitel springen Gruppe “myftp” erstellen

Nachdem lt. unserer Konfiguration nur Benutzer der Gruppe myftp Zugriff auf den FTP-Server erhalten, werden wir diese Gruppe als nächstes auf unserem Server anlegen.

sudo addgroup myftp

Zum Kapitel springen Nutzer der Gruppe hinzufügen

Bisher haben wir die Gruppe myftp. Diese Gruppe hat aber noch gar keine Benutzer. Alle Nutzer, die Zugriff erhalten sollen, müssen jetzt im nächsten Schritt der Gruppe hinzugefügt werden. Bei mir ist das der einzige Nutzer des Servers: makesmart. Und auch nur dieser soll Zugriff bekommen, deshalb werde ich den Nutzer der Gruppe hinzufügen:

sudo adduser makesmart myftp

Mit diesem Befehl hat der Nutzer makesmart nun Zugriff auf den FTP-Server. Beim Login landet er direkt in seinem Homeverzeichnis, da wir das in der Konfiguration definiert haben.

Zum Kapitel springen Verbindung herstellen

Jetzt ist es bereits möglich, sich über einen FTP-Client mit dem Server zu verbinden. Als Login Daten für den FTP-Zugang verwendet man dieselben Anmeldedaten, die auch für den Benutzer verwendet werden:

Feld Beispielwert
Host makesmart-server
Benutzer makesmart
Passwort makesmart
Port 21

Unsichere FTP-Verbindung Message-Popup ><

Nach dem Bestätigen der Meldung werden wir eingeloggt und befinden uns im Home-Verzeichnis unseres Nutzers.

/home/makesmart

In dem Verzeichnis können wir Dateien und Ordner ablegen bearbeiten und löschen.

Zum Kapitel springen Verbindung verschlüsseln

Wie bereits erwähnt, ist eine Verschlüsselung im lokalen Netzwerk nicht unbedingt erforderlich. Wer aber auf der sicheren Seite sein möchte oder andere Gründe hat, warum die Verbindung verschlüsselt sein sollte, kann die nachfolgenden Schritte ausführen.

Zum Kapitel springen OpenSSL installieren

sudo apt-get install openssl

Zum Kapitel springen Ordner für die Zertifikate anlegen

sudo mkdir /etc/ssl/localcerts

Zum Kapitel springen Zertifikat erstellen

sudo openssl req -new -x509 -days 365 -nodes -out /etc/ssl/localcerts/proftpd.pem -keyout /etc/ssl/localcerts/proftpd.key

Die beiden Pfade bestimmen den Speicherort und den Namen der Zertifikate

Der Parameter -days 365 bedeutet, dass das Zertifikat ein Jahr lang gültig ist. Nach diesem Zeitraum wird das Zertifikat ungültig und eine Verbindung unter diesem abgelaufenen Zertifikat ist dann nicht mehr möglich. Es müssen dann neue Zertifikatsdateien erstellt werden.

Beim Erstellen des Zertifikats werden ein paar Daten verlangt. Es spielt dabei keine Rolle, ob die Daten der Wahrheit entsprechen, oder nicht. Sie dienen nur zum Füllen der Informationen des Herausgebers des Zertifikats - also ihr.

Zum Kapitel springen Rechte der Zertifikate anpassen

Nachdem die Zertifikate für einen sicheren FTP-Zugang erstellt wurden, ist es wichtig, die Dateiberechtigungen entsprechend anzupassen. Die folgende Befehlszeile setzt die Berechtigungen so, dass nur der Root-Benutzer Lesezugriff auf die Zertifikatsdateien hat:

sudo chmod 600 /etc/ssl/localcerts/proftpd*

Zum Kapitel springen ProFTPD Konfiguration bearbeiten

Nach dem Erstellen der Zertifikate um dem Anpassen der Berechtigungen muss nochmal die Konfigurationsdatei von ProFTPd bearbeitet werden. Dort müssen die erstellen Zertifikate hinterlegt werden um eine verschlüsste Verbindung zu ermöglichen.

sudo nano /etc/proftpd/conf.d/myftp.conf

Fügt am Ende folgende Zeilen ein. Die Zeilen bestimmten die Pfade der Zertifikate und einige Einstellungen zu TLS. Unter anderem wird mit der Zeile TLSRequired on die Verbindung via TLS erzwungen.

<IfModule mod_tls.c>
    TLSEngine on
    TLSLog /var/log/proftpd/tls.log
    TLSProtocol TLSv1.2
    TLSRSACertificateFile /etc/ssl/localcerts/proftpd.crt
    TLSRSACertificateKeyFile /etc/ssl/localcerts/proftpd.key
    TLSVerifyClient off
    TLSOptions NoSessionReuseRequired
    TLSRequired on
</IfModule>

Wenn alles soweit eingetragen wurde, kann der FTP-Server neugestartet werden um die Änderungen zu übernehmen.

sudo systemctl restart proftpd

Zum Kapitel springen Verschlüsselte Verbindung herstellen

Um eine verschlüsselte Verbindung herzustellen haben sich die Logindaten geändert. Absofort muss der Port 22 verwendet werden, ansonsten wird die Verbindung abgelehnt.

Feld Beispielwert
Host makesmart-server
Benutzer makesmart
Passwort makesmart
Port 22

FTP-Verbindung - Unbekannter Serverschluessel ><

Status:	Verbinde mit makesmart-server...
Status:	Connected to makesmart-server
Status:	Eming directory /home/makesmart
Status:	Anzeigen des Verzeichnisinhalts für "/home/makesmart" abgeschlossen

Das Thema server gibt es auch auf dem makesmart Discord-Server!

mehr erfahren

Teile diesen Beitrag



Diese Artikel könnten dich auch interessieren

ESP8266 - Ein einfacher Webserver mit mDNS

Während Webserver wie Apache2 oder NGNIX auf Rechnern laufen, kann man auch auf einem ESP8266 einen Webserver verwenden. In diesem Tutorial werden wir ein Grundgerüst implementieren.

cooper.bin am 13.02.2024

ESP8266 Webserver: GET-Variablen auslesen

GET-Parameter sind Variablen, die über die URL übergeben werden. Diese Variablen können auf einem ESP8266 ausgelesen werden, um bestimmte Aktionen in der Software auszulösen.

cooper.bin am 17.02.2024

ESP8266 D1 Mini WLAN-Relais mit HTTP API

Mit diesem einfachem Webserver auf dem ESP8266 mit HTTP API kannst du ein Relais smart machen! Steuere das Relais über deinen Webbrowser oder automatisiert durch andere Dienste.

cooper.bin am 20.02.2024

NeDB: Eine MongoDB-ähnliche dateibasierte Datenbank für Javascript

Mit NeDB erhältst du eine dateibasierte und lokale NoSQL-Datenbank. Ihre Ähnlichkeit mit MongoDB eröffnet zudem flexible Abfragemöglichkeiten für dein Node.js-Projekt.

cooper.bin am 30.03.2024

MongoDB installieren - Die NoSQL Datenbank auf dem eigenen Server

MongoDB kann neben einer managed Lösung auch einfach und schnell in wenigen Schritten selbst installiert werden. In diesem Tutorial erfährst du wie du MongoDB auf deinem Server installierst

cooper.bin am 01.04.2024