FTP-Server auf dem Raspberry Pi einrichten

Wenn man einen Webserver, wie den "lighttpd" auf einem Raspberry Pi betreibt, dann macht es auch Sinn, einen FTP-Server zu installieren, um aus der Ferne Dateien in das Webserver-Verzeichnis zu laden. Für diesen Zweck gibt es verschiedene FTP-Server für den Raspberry Pi. Beispielsweise ProFTP oder vsftpd. Allerdings ist eine Installation dieser FTP-Server nicht zwangsläufig notwendig.

FTP ist ein altes und unsicheres Protokoll für den Filetransfer. Es gibt eigentlich keinen Grund mehr, einen FTP-Server zu betreiben. Wer unbedingt Filetransfer betreiben möchte, der sollte das mit SSH machen. Meist ist für den Remote-Zugriff bereits ein SSH-Server eingerichtet. Der beherrscht dann auch das FTP-Protokoll, womit man den Filetransfer über die sichere SSH-Verbindung abwickeln kann. Das ist sicherer und gleichzeitig so komfortabel, wie bei einem FTP-Server. Funktional absolut identisch.

Aufgabe

  1. Installieren Sie bei Bedarf einen FTP-Server auf dem Raspberry Pi.
  2. Laden sich einen FTP-Client herunter und installieren sie ihn auf Ihrem Client.
  3. Überprüfen Sie die Erreichbarkeit des SSH-Servers per SFTP über das lokale Netzwerk.
  4. Richten Sie den Webserver so ein, dass Sie Dateien direkt in das Webserver-Verzeichnis per FTP laden können.

Lösung ohne Installation eines FTP-Servers

Viele Lösungen beruhen auf der Installation eines FTP-Servers, wie zum Beispiel ProFTP oder vsftpd. Doch das ist gar nicht notwendig. Was viele nicht wissen ist, dass SSH FTP-Befehle in Form von SFTP unterstützt. Wenn der Fernzugriff per SSH funktioniert muss man nichts weiter machen, als mit einem FTP-Client, wie zum Beispiel Filezilla, eine SFTP-Verbindung (Port 22) zum Raspberry Pi aufzubauen.
Für die Verbindung benötigt man die IP-Adresse des Raspberry Pi, sowie Benutzername und Passwort. Nach dem erfolgreichen Verbindungsaufbau per FTP-Client landet man automatisch im Home-Verzeichnis des Benutzers.

Damit man nicht im Home-Verzeichnis des Benutzers (zum Beispiel "pi"), sondern im Verzeichnis des Webservers landet, muss man dafür einen Extra Benutzer anlegen oder noch einfacher, das Home-Verzeichnis des Benutzers zum Webserver-Verzeichnis machen.

Dazu muss man ein paar Änderungen in der Webserver-Konfiguration machen:

sudo nano /etc/lighttpd/lighttpd.conf

Im Editor ändert man folgende Zeile (oder ähnlich):

server.document-root        = "/var/www/html"

Hier trägt man das Home-Verzeichnis des Users ein. Zum Beispiel "/home/pi".

Anschließend speichern und beenden mit: Strg+O, Enter, Strg+X

Hinweis: Oft sind falsche Berechtigungen das Problem, wenn die im Home-Verzeichnis enthaltenen Dateien vorhanden, aber nicht über den Webserver abgerufen werden können. Das kann man mit folgenden Kommandos korrigieren:

sudo chown pi:www-data -R /home/pi
sudo chmod 775 /home/pi

Lösung: User für SFTP (FTP über SSH) einrichten

Damit man nicht im Home-Verzeichnis des Benutzers (zum Beispiel "pi"), sondern im Verzeichnis des Webservers landet, muss man dafür einen Benutzer anlegen, dessen Home-Verzeichnis das Webserver-Verzeichnis ist.

Dazu richten wir einen neuen User, zum Beispiel "piftp" ein, den wir nur für die SFTP-Verbindung (SSH + FTP) verwenden. Natürlich kann auch ein anderer Benutzername gewählt werden. Der muss dann bei der weiteren Einrichtung berücksichtigt werden.

sudo adduser piftp --no-create-home

Dann müssen wir ein Passwort vergeben, dass global, also für die lokale Anmeldung und die SSH-Anmeldung gilt. Beim Eintippen des Passworts werden keine Platzhalter angezeigt, man tippt also "blind".

Anschließend weisen wir den neuen Benutzer der Gruppe "www-data" zu.

sudo usermod -G www-data piftp

Dann verbinden wir das Webserver-Verzeichnis mit dem neuen User. Wichtig ist hier nur, dass das Verzeichnis vorher bestehen sollte.

sudo usermod -d /var/www/html/ piftp

Dann müssen wir noch die Rechte für diesen User setzen. Wir machen ihn zum Eigentümer und setzen dann noch die Rechte für das Webserver-Verzeichnis.

sudo chown piftp:www-data -R /var/www/html
sudo chmod 775 -R /var/www/html

Hinweis

Es gibt so gut wie keinen Grund mehr einen FTP-Server standalone zu betreiben. Wer Dateien öffentlich zum Download anbieten will, kann das mit einem Webserver bequemer machen. Auch wenn das Protokoll HTTP nicht ganz so effizient ist, wie FTP.
Um entfernte Server Ordner- und Datei-basiert zu verwalten ist ein verschlüsseltes Protokoll, wie SSH, viel besser geeignet.

Raspberry Pi als File-Server

Der Raspberry Pi eignet sich in gewisser Weise auch als File-Server. Also eine Art Festplatte oder Datenspeicher im Netzwerk. Es gibt dafür verschiedene Möglichkeiten der Realisierung, die alle ihre Vorteile, aber auch Nachteile haben.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Netzwerktechnik-Fibel

Alles was Sie über Netzwerke wissen müssen.

Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.

Das will ich haben!

Netzwerktechnik-Fibel

Alles was Sie über Netzwerke wissen müssen.

Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.

Das will ich haben!

Collection: IPv6

Alles was Sie über IPv6 wissen müssen.

Eine PDF-Datei mit allen Artikeln über das Internet Protocol Version 6 von dieser Webseite. Die Zusammenstellung berücksichtigt die Einführung in die Grundlagen von IPv6 mit detailreichen Beschreibungen und zahlreichen Tabellen und Abbildungen. Erfahren Sie mehr über die Möglichkeiten und Zusammenhänge im IPv6-Netzwerk.

Mehr Informationen und zum Download