Navigation

    makesmart

    • Registrieren
    • Anmelden
    • Suche
    • Aktuell
    • Tags
    • Kategorien
    • Ungelesen
    • Beobachtet
    • Beliebt
    • Gespeichert
    • Gruppen

    FTP-Server auf dem Raspberry Pi installieren

    Tipps, Tricks & Tutorials
    debian ftp linux raspberry pi server tutorial
    2
    3
    424
    Lade mehr Beiträge
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
    • cooper
      cooper Content Creator zuletzt editiert von cooper

      FTP steht für File Transfer Protocol und ist ein Netzwerkprotokoll zur Übertragung von Dateien. FTP wird meistens dafür benutzt, um Dateien vom Client auf den Server hochzuladen, oder Dateien vom Server auf den Client herunterzuladen.

      Der Server hinter dem FTP kann hierbei als alles Mögliche dienen:

      • als Webserver
      • als Dateiserver
      • als Downloadserver
      • oder einfach nur als ein Server zuhause, zum rumspielen und basteln

      Ich für meinen Teil nutze meinen lokalen makesmart-server als Testserver und möchte meine Webanwendungen leichter bearbeiten können. Hierzu soll der FTP-Server dienen. Der FTP-Server ermöglicht es mir unter anderem, die Dateien direkt auf dem Server zu bearbeiten. Damit ist das runterladen - bearbeiten - hochladen, was mir so hart auf die Eier geht, endlich vorbei. 🍾

      Als Software verwende ich ProFTPD.

      ProFTPD is a high-performance, extremely configurable, and most of all a secure FTP server, featuring Apache-like configuration …

      Installation

      ProFTPD installieren

      sudo apt install proftpd-basic
      

      Konfiguration

      Nach der Installation erstellen wir eine Konfigurationsdatei. Die Konfiguration bleibt von Updates der Software unberührt. Wir sind also auf der sicheren Seite. Der Inhalt des Verzeichnisses conf.d, in dem wir die Konfiguration speichern, wird von der Software immer automatisch importiert.

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

      Die Konfiguration bekommt folgenden Inhalt. Die Zeilen sind in der Konfiguration erklärt.

      # Das Home-Verzeichnis ~  ist das Stammverzeichnis der Benutzer in den Gruppen myftp und root
      
      DefaultRoot ~ myftp,root
      
      # Login wird nur Benutzern der Gruppe myftp erlaubt
      <Limit LOGIN>
          DenyGroup !myftp
      </Limit>
      

      Damit diese Änderungen wirksam werden, muss der FTP-Server einmal neugestartet werden.

      sudo systemctl restart proftpd
      

      Gruppe “myftp” erstellen

      Nachdem 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
      

      Nutzer der Gruppe hinzufügen

      Alle Nutzer, die Zugriff erhalten sollen, müssen dann im nächsten Schritt der Gruppe hinzugefügt werden. Bei mir ist das der einzige Nutzer des Servers: makesmart.

      sudo adduser makesmart myftp
      

      Login FTP

      Schon jetzt kann man sich mit einem FTP-Client, wie FileZilla, auf dem Server einloggen. Die Daten für den FTP-Login sind die gleichen, wie die Daten die man für den SSH-Login verwendet. In meinem Fall lauten die Zugangsdaten:

      Hostname Benutzername Passwort Port
      makesmart-server makesmart makesmart 21

      ftp_tls.png

      Auch wenn eine Verschlüsselung in einem geschlossenen lokalem Netzwerk nicht unbedingt notwenidg wäre, werden wir uns darum gleich noch kümmern. 👍


      Nach dem Einloggen befinden wir uns im Home-Verzeichnis des Nutzers, mit dem wir uns eingeloggt haben. ✔

      /home/makesmart
      

      In dem Verzeichnis können wir Daten ablegen und bearbeiten, Ordner anlegen und löschen.


      Erweitere Rechte

      In meinem Fall wollte ich den FTP-Server installieren, um die Dateien meiner Webanwendungen direkt auf dem Server bearbeiten zu können. Das Verzeichnis befindet sich unter /var/www/html. Wenn ich diesen Pfad über den FTP-Client aufrufe, kann ich die Dateien zwar sehen, aber weder löschen, noch bearbeiten oder gar neue erstellen …

      Status:	  Lösche "/var/www/html/index.html"
      Befehl:	  DELE index.html
      Antwort:  550 index.html: Permission denied
      

      Der Grund dafür sind die fehlenden Berechtigungen für den Ordner. Die Lösung ist sehr simple:
      Wir machen unseren Nutzer makesmart einfach zum Eigentümer den Ordners.

      sudo chown -R makesmart:makesmart /var/www/html
      

      Jetzt können wir, neben dem Home-Verzeichnis, auch die Daten im Ordner /var/www/html frei verwalten.

      Status:	Lösche "/var/www/html/index.html"
      Status:	Empfange Verzeichnisinhalt für "/var/www/html"...
      Status:	Anzeigen des Verzeichnisinhalts für "/var/www/html" abgeschlossen
      

      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, kann die folgende Anleitung verwenden, um die Verbindung zu verschlüssen.

      Für die Verschlüsselung wird ein SSL-Zertifikat benötigt. Wie man ein solches Zertifikat selbst generieren, und für einen Apache2-Webserver verwenden kann, habe ich bereits in einem Tutorial gezeigt.

      Die gleichen Befehle können genutzt werden, um ein eigenes Zertifikat für den FTP-Server zu erstellen.


      OpenSSL installieren

      sudo apt-get install openssl
      

      Ordner für die Zertifikate anlegen

      sudo mkdir /etc/ssl/localcerts
      

      Zertifikat erstellen

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

      Der Parameter -days 365 bedeutet, dass das Zertifikat 1 Jahr lang gültig ist.
      Die beiden Pfade bestimmen den Speicherort und den Namen der Zertifikate.

      Es wird nach euren Daten gefragt, die ihr Eingeben müsst. 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 (ihr).

      Rechte der Zertifikate anpassen

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

      Anschließend muss nochmal die zu Beginn erstellte .conf-Datei myftp.conf bearbeitet werden.

      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 eingerichtet wurde, kann der FTP-Server neugestartet werden.

      sudo systemctl restart proftpd
      

      Login SFTP

      Absofort ist zum Login der Port 22 erforlderlich, ansonsten wird die Verbindung abgelehnt.

      Hostname Benutzername Passwort Port
      makesmart-server makesmart makesmart 22

      ftp_tls_2.png

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

      Auch hier gilt: Da wir das Zertifikat selbst ausgestellt haben, gelten wir … leider … als nicht vertrauenswürdige Quelle. Das Zertifikat ist aber vollwertig und macht das was es soll. 👌


      Zusammenfassung

      Wir haben also einen FTP-Zugang geschaffen, für alle Nutzer in der Gruppe myftp.
      Um einem Nutzer Zugriff zu gewähren, muss man ihn einfach zur Gruppe hinzufügen.

      sudo adduser makesmart myftp
      

      Das Standardverzeichnis ist das Home-Verzeichnis des jeweiligen Nutzers. /home/makesmart

      Falls der Nutzer root-Rechte hat, hat er ebenfalls Zugriff auf das Wurzelverzeichnis /.
      Ein Login mit dem Benutzer root nicht möglich.


      Um einem Nutzer den Zugang zum FTP-Server zu entziehen, muss man ihn einfach aus der Gruppe myftp entfernen.

      sudo deluser makesmart myftp
      

      Viel Spaß bei euren Projekten,

      cooper

      Gauweiler42 1 Antwort Letzte Antwort Antworten Zitieren 0
      • Gauweiler42
        Gauweiler42 @cooper zuletzt editiert von

        @cooper alternativ für die Zukunft sollte doch auch SFTP, also direkt über SSH funktionieren. Das ist direkt mitinstalliert 😅

        cooper 1 Antwort Letzte Antwort Antworten Zitieren 0
        • cooper
          cooper Content Creator @Gauweiler42 zuletzt editiert von

          @gauweiler42 Mal testen danke 👍

          1 Antwort Letzte Antwort Antworten Zitieren 0
          • 1 / 1
          • First post
            Last post