2077857

FTP-Server, SFTP- & NFS-Server für Linux im Überblick

01.02.2019 | 12:09 Uhr | Thorsten Eggeling

Der Dateitransport von A nach B ist mit einem Linux-Server kein Problem. Für die reibungslose Funktion und insbesondere für erhöhte Sicherheit sollten Sie jedoch die Konfiguration anpassen.

Für den Dateitransfer zwischen Linux-Servern oder Desktop-PCs gibt es viele Methoden. Einige davon sind schneller, andere sicherer und wieder andere bequemer. Passende Lösungen gibt es für jeden Einsatzbereich: für Backups, Downloads, Uploads oder für direktes Bearbeiten von Dateien auf dem Server. Wie Sie die nötige Software auf dem Server konfigurieren und dann auf die Dateien zugreifen, erklärt dieser Artikel.

Linux als WebDAV-Server einsetzen

SFTP: Sicher und schnell

Der Open-SSH-Server bietet nicht nur einen Shell-Zugang, sondern auch den Dateitransfer über SFTP an (SSH File Transfer Protocol oder Secure File Transfer Protocol). Die Kommunikation läuft wie bei SSH verschlüsselt über Port 22. Richten Sie zuerst den SSH-Server ein.

Für die Kommandozeile gibt es zwei Befehle, über die Sie auf einen SFTP-Server zugreifen können. Mit der Zeile

scp test.tar.gz Benutzer@Server.de:~/  

kopieren Sie die Datei „test.tar.gz“ aus dem aktuellen Verzeichnis in das Home-Verzeichnis auf dem Server. „Benutzer“ ersetzen Sie durch Ihren Anmeldenamen und „Server.de“ durch die IP-Adresse oder den Domain-Namen Ihres Linux-Servers. Bei der erstmaligen Verbindung zum Server müssen Sie den SSL-Schlüssel mit „yes“ akzeptieren. scp funktioniert ähnlich wie cp in der allgemeinen Form mit „scp Quelle Ziel“. Mit

scp Benutzer@Server.de:~/test.tar.gz test.tar.gz  

laden Sie die Datei „test.tar.gz“ vom Server in das aktuelle Verzeichnis herunter. scp kann auch Wildcards wie „*“ verarbeiten. Um alle PNG-Dateien aus dem Verzeichnis „Bilder“ in Ihrem Home-Verzeichnis auf den Server hochzuladen, verwenden Sie dieses Kommando:

scp ~/Bilder/*.png BenutzerName@ MeinServer.de:~/Bilder  

sftp ist eine Alternative zu scp. Sie starten es mit

sftp Benutzer@Server.de  

und melden sich mit Ihrem Passwort an. help liefert eine Übersicht der verfügbaren Kommandos. Mit ls lassen Sie sich den Verzeichnisinhalt auf dem Server anzeigen, mit cd Ordner wechseln Sie in ein anderes Verzeichnis. Sie können wie in der Bash-Shell die Tab-Taste für die automatische Ergänzung von Datei- und Ordnernamen verwenden. Mit get DateiName laden Sie eine Datei herunter, put DateiName verwenden Sie für den Upload.

SFTP im Dateimanager: Über eine URL wie „ssh://192.168.0.20“ binden Sie eine SFTP-Freigabe in Thunar oder Nautilus ein. Dabei erfolgt eine Abfrage von Benutzer und Passwort.
Vergrößern SFTP im Dateimanager: Über eine URL wie „ssh://192.168.0.20“ binden Sie eine SFTP-Freigabe in Thunar oder Nautilus ein. Dabei erfolgt eine Abfrage von Benutzer und Passwort.

Grafische Programme für den Dateitransfer: scp und sftp überschreiben vorhandene Dateien ohne Rückfrage. Mehr Komfort bieten Dateimanager wie Nautilus (Gnome/ Ubuntu) oder Thunar (Xfce/Xubuntu). Hier verwenden Sie eine URL wie „ssh://Server.de“ in der Adresszeile. Im KDE-Dateimanager Dolphin tragen Sie fish://MeinServer.de ein. Die Adresszeile lässt sich jeweils mit Strg-L einblenden. Der Zugriff ist außerdem über Programme wie Filezilla möglich (> nächster Punkt).

SFTP mounten: Sie können einen SSH/SFTP-Server über Fuse (Filesystem in Userspace) und das Modul sshfs auch in das lokale Dateisystem einbinden. Installieren Sie die nötige Software über

sudo apt-get install sshfs  

Damit ein Benutzer ohne root-Rechte Fuse nutzen kann, fügen Sie ihn mit

sudo usermod -aG fuse Benutzer  

zur Gruppe „fuse“ hinzu. „Benutzer“ ersetzen Sie durch Ihren Anmeldenamen. Melden Sie sich ab und wieder an. Erstellen Sie einen Mountpunkt im Home-Verzeichnis, und hängen Sie das Dateisystem ein:

mkdir ~/fusessh  sshfs Benutzer@Server.de:/Pfad ~/fusessh  

Mit fusermount -u ~/fusessh lösen Sie die Einbindung wieder.

SFTP einschränken: Standardmäßig hat jedes Benutzerkonto SSH- und SFTP-Zugriff. Sie können aber für einzelne Benutzern oder Gruppen den Shell-Zugang über SSH verbieten und SFTP auf ein bestimmtes Verzeichnis beschränken, etwa für den Datenaustausch mit Bekannten oder Mitarbeitern.

Dazu öffnen Sie die Datei „/etc/ssh/sshd_config“ als root in einem Editor und fügen am Ende folgende sechs Zeilen an:

Match Group sftpgroup  ChrootDirectory /home/sftphome  ForceCommand internal-sftp  AllowTcpForwarding no PermitTunnel no  X11Forwarding no  

Erstellen Sie mit addgroup sftpgroup eine neue Gruppe und mit den folgenden fünf Zeilen einen neuen Benutzer mit Passwort und das Verzeichnis „/home/sftphome“ mit den erforderlichen Rechten:

sudo useradd -s /bin/false -g sftpgroup sftpuser  sudo passwd sftpuser  sudo mkdir /home/sftphome sudo chown root:root /home/sftphome  sudo chmod 755 /home/sftphome  

Der Benutzer sftpuser kann sich jetzt über SFTP anmelden und Dateien aus „/home/smthome“ herunterladen. Wenn er auch Dateien hochladen soll, führen Sie folgende Befehle aus:

mkdir /home/sftphome/upload  chown root:sftpgroup /home/sftp home/upload  chmod 775 /home/sftphome/upload  

Damit erhalten Mitglieder der Gruppe sftpgroup Schreibrechte im Ordner „/home/sftphome/upload“. Eine Anmeldung über SSH ist für diese Gruppe nicht möglich.

Linux-Server mit Apache, PHP und MySQL

FTP über SSL absichern: FTP-Server wie Proftpd übertragen Daten standardmäßig unverschlüsselt. In der Konfigurationsdatei „/etc/ proftpd/tls.conf“ lässt sich das ändern.
Vergrößern FTP über SSL absichern: FTP-Server wie Proftpd übertragen Daten standardmäßig unverschlüsselt. In der Konfigurationsdatei „/etc/ proftpd/tls.conf“ lässt sich das ändern.

FTP-Server unter Linux: Schnell, aber nicht ungefährlich

Das File Transfer Protocol (FTP) ist ein Klassiker unter den Netzwerkprotokollen. Es ist seit 1985 standardisiert, bei vielen Web-Hostern im Einsatz und dient vor allem dem Upload von Dateien auf die eigene Homepage. Die ungebrochene Beliebtheit von FTP erklärt sich wohl dadurch, dass FTP-Clients auf allen Plattformen standardmäßig vorhanden sind.

FTP überträgt jedoch alle Daten unverschlüsselt. Das ist innerhalb eines privaten Netzwerkes kein Problem, im Internet jedoch ein Sicherheitsrisiko. Wenn ein Web-Hoster auch SSH/SFTP anbietet, ist es besser, wenn Sie FTP deaktivieren.

FTP über SSL: Sollten Sie auf FTP angewiesen sein, lässt sich auch hier Verschlüsselung aktivieren. Der Dienst nennt sich „FTP über SSL“, 2FTP über TLS2 oder kurz „FTPS“. Richten Sie mit apt-get install proftpd beispielsweise den FTP-Server Proftpd ein. Wählen Sie dabei für optimale Leistung die Option „Servermodus“. Öffnen Sie dann die Konfigurationsdatei mit sudo nano /etc/proftpd/proftpd.conf. In der Standardkonfiguration erlaubt das Programm allen Benutzerkonten den Zugriff auf alle Dateien auf dem Server, soweit sie dafür Berechtigungen besitzen. Wenn Sie das ändern möchten, entfernen Sie das Kommentarzeichen „#“ vor „DefaultRoot ~“.

Für FTPS entfernen Sie das Kommentarzeichen vor der Zeile „Include /etc/ proftpd/tls.conf“. Speichern Sie die Datei mit Strg-O, und schließen Sie den Editor mit Strg-X. Dann öffnen Sie mit sudo nano /etc/proftpd/tls.conf die Konfigurationsdatei für die Verschlüsselung.

Entfernen Sie die Kommentarzeichen, und ergänzen Sie fehlende Zeilen, so dass nach der Zeile

<IfModule mod_tls.c>  

der Inhalt gemäß nebenstehender Abbildung entsteht – beginnend mit „TLSEngine on“ und endend mit „</ IfModule>“. Die Zertifikatdateien „proftpd.crt“ und „proftpd.key“ können Sie selbst erstellen und signieren. Der Befehl dafür steht als Kommentar in der Datei. Starten Sie den FTP-Server mit service proftpd restart neu.

FTP-Client-Software: Ein beliebter FTP-Client ist Filezilla, das in den Repositorien aller größeren Linux-Distributionen zu finden ist. Über „Datei > Servermanager > Neuer Server“ tragen Sie die Verbindungsdaten ein. Hinter „Protokoll“ wählen Sie „FTP - File Transfer Protokoll“ und hinter „Verschlüsselung“ den Eintrag „Explizites FTP über TLS erfordern“. Bei „Verbindungsart“ stellen Sie „Normal“ ein und tragen darunter Benutzernamen und Passwort ein. Ist alles korrekt, erhalten Sie mit „Verbinden“ Zutritt.

FTP/SFTP-Client: Für den bequemen Transfer von Dateien und Ordnern beispielsweise auf Ihre Homepage ist die Client-Software Filezilla immer eine Empfehlung.
Vergrößern FTP/SFTP-Client: Für den bequemen Transfer von Dateien und Ordnern beispielsweise auf Ihre Homepage ist die Client-Software Filezilla immer eine Empfehlung.

NFS: Dateitransfer im lokalen Netzwerk

SFTP und FTP eignen sich für die Datenübertragung im lokalen Netzwerk wie im Internet. NFS (Network File System) sollten Sie aus Sicherheitsgründen nur im eigenen Netz verwenden. Das Dateisystem hat vor allem Vorzüge bei permanenten Verbindungen zwischen mehreren Linux-PCs. Im Vergleich zu Samba arbeitet NFS schneller, die Freigaben sind aber ohne zusätzliche Software nicht für Windows-PCs erreichbar.

Auf dem Server installieren Sie zuerst die nötige Software mit der Zeile

sudo apt-get install nfs-kernelserver  

Auf den Client-PCs richten Sie das Paket „nfs-common“ ein. Öffnen Sie auf dem Server mit sudo nano /etc/exports die NFS-Konfigurationsdatei im Editor. Mit folgender Zeile

/mnt/data0 192.168.0.14(rw,async)  

geben Sie eine Festplatte, die in „/mnt/ data0“ eingehängt ist, für den Rechner mit der IP-Adresse 192.168.0.14 frei. Starten Sie den NFS-Server mit sudo service nfs-kernel-server restart neu. Auf dem Client-PC hängen Sie das Dateisystem dann mit dem folgenden Befehl ein:

sudo mount 192.168.0.20:/mnt/data0 /mnt/data0  

Für die Beispiel-IP setzen Sie die tatsächliche IP-Adresse Ihres Servers ein.

Das Zielverzeichnis „/mnt/data0“ muss existieren. Jeder Benutzer kann die Dateien lesen, root hat Schreibrechte. Wenn Sie das ändern wollen, setzen Sie auf Server wie Client die Rechte für die Mount-Verzeichnisse entsprechend, etwa mit sudo chmod 777 /mnt/data0. NFS kennt keine Authentifizierung der Benutzer. Die Rechte werden über die Benutzer-IDs gewährt, was nur dann problemlos funktioniert, wenn auf allen beteiligten PCs die gleichen Benutzer mit identischen IDs vorhanden sind.

Bei einem privaten Server und Client ist das jedoch leicht zu verwalten, solange Sie NFS nur als root (ID:0) und mit dem ersten angelegten Benutzerkonto (ID:1000) verwenden. Gibt es auf dem Client, nicht aber auf dem Server einen weiteren Benutzer etwa mit der ID 1001, werden Ordner und Dateien mit dessen ID erstellt. Das macht spätere Neuzuweisungen von Rechten auf dem Server kompliziert.

Webdav für die Verbindung zum Server nutzten

Webdav (Web-Distributed Authoring and Versioning) ist eine Erweiterung des HTTP-Protokolls, das Schreibzugriffe auf den Webserver ermöglicht. Bei Nextcloud ist Webdav bereits vorkonfiguriert und wird auch vom Nextcloud-Client verwendet. In der Weboberfläche von Nextcloud sehen Sie die Webdav-Adresse links unten im Fenster nach einem Klick auf „Einstellungen“. Wenn Sie einen eigenen Webdav-Server nur mit Apache unabhängig von Nextcloud einrichten möchten, finden Sie hier eine Anleitung dafür .

Der Vorteil von Webdav: Auch Windows-Anwender können die Freigaben ohne zusätzliche Software nutzen (im Windows-Explorer über „Netzwerklaufwerk verbinden“). Im Dateimanager Nautilus von Ubuntu 18.04 gehen Sie auf „Andere Orte“ und tippen hinter „Server Adresse“ die Adresse in der Form

davs://[MeinServer.de]/remote.php/webdav/  

ein. „[MeinServer.de]“ ersetzen Sie durch den Domainnamen, über den Ihr Nextcloud-Server erreichbar ist. Sollte Ihr Server keine SSL-Verschlüsselung bieten, verwenden Sie den Präfix „dav://“.

Nutzer von Linux Mint gehen im Dateimanager auf „Datei –› Mit Server verbinden“ und tragen die erforderlichen Verbindungsinformationen ein.

In beiden Systemen können Sie die Serveradresse auch einfach in die Adressleiste eintippen (einblenden mit Strg-L). Damit sich nach einem Neustart des Systems die Verbindung zum Webdav-Server schnell wiederherstellen lässt, erstellen Sie ein Lesezeichen über „Lesezeichen –› Lesezeichen hinzufügen“ (Linux Mint 19) beziehungsweise über den Kontextmenüpunkt „Lesezeichen hinzufügen“ (Ubuntu 18.04).

In den KDE-Dateimanagern Dolphin und Konqueror verwenden Sie ebenfalls die Adressleiste, in die Sie die Webdav-Adresse in der Form „webdavs://[Server-Adresse]“ eintippen, oder für unverschlüsselte Verbindungen „webdav://“.

Viele Cloudanbieter haben Webdav ebenfalls im Angebot. Als GMX-Kunde beispielsweise verwenden Sie die Adresse „davs:// webdav.mc.gmx.net“ und bei der Telekom „davs://webdav.magentacloud.de“. Bei GMX genügen Benutzernamen und Passwort, die Sie auch bei der E-Mail-Anmeldung nutzen. Telekom-Kunden müssen sich zuerst über https://www.magentacloud.de anmelden und in den „Login-Einstellungen“ ein Webdav-Passwort festlegen.

Webdav in das Dateisystem einhängen

Webdav-Freigaben lassen sich auch direkt in das Dateisystem einbinden. Das ist von Vorteil, etwa wenn die Dateien auf dem Webdav-Server direkt nach dem Systemstart oder auch für andere Benutzer des PCs bereitstehen sollen. Dafür ist ein Dateisystemtreiber nötig, den Sie im Terminal mit diesem Befehl installieren:

sudo apt-get install cacertificates davfs2  

Die Paketverwaltung fragt Sie, ob Sie auch unprivilegierten Benutzern erlauben wollen, Webdav-Ressourcen einzubinden. Antworten Sie mit „Ja“, wenn alle Benutzer die Funktion verwenden dürfen. Zusätzlich müssen diese zur Gruppe „davfs2“ gehören:

sudo usermod -aG davfs2 [User]  

Den Platzhalter „[User]“ ersetzten Sie durch den Namen des gewünschten Benutzers. Wenn Sie Webdav-Server nur mit root-Rechten einbinden wollen, ist das nicht nötig.

Erstellen Sie einen Ordner für die Dateien

sudo mkdir /mnt/webdav 

und passen Sie dann die Datei „/etc/fstab“ folgendermaßen an:

sudo nano /etc/fstab  

Hier fügen Sie diese Zeile am Ende an:

https://[Server]/mnt/webdav davfs users,noauto,file_mode=666,dir_ mode=777 0 1  

Für „[Server]“ setzen Sie die Webdav-URL etwa Ihres Nextcloud-Servers ein. Die Werte hinter „file_mode=“ und „dir_mode=“ erlauben Lese- und Schreibrechte für alle Benutzer. Verwenden Sie alternativ „file_ mode=644,dir_mode=755“, um die Schreibrechte zu entziehen. Speichern Sie die Datei mit Strg-O und beenden Sie den Editor mit Strg-X.

In die Datei „/etc/davfs2/secrets“ tragen Sie dann die Anmeldedaten für den Server ein. Dafür genügt eine Zeile wie

https://meinserver.de/remote.php/webdav/sepp Geheim 

oder in der allgemeinen Form mit Platzhaltern

https://[MeinServer] [Benutzername] [Passwort]  

Probieren Sie in einem Terminalfenster aus, ob sich die Webdav-Ressource in das Dateisystem einbinden lässt:

sudo mount /mnt/webdav  

Damit das beim Systemstart automatisch erfolgt, tragen Sie diese Befehlszeile ohne vorangestelltes „sudo“ in die Datei „/etc/ rc.local“ vor der Zeile „exit 0“ ein. Sollte „/etc/rc.local“ nicht vorhanden sein, etwa bei Ubuntu 18.04, dann erstellen Sie mit diesen zwei Befehlszeilen

printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local  

die Datei vorab.

Dateien von Netzwerkspeichern kopieren

Manchmal ist es gewünscht, Dateien von einem Cloudserver auf die lokale Festplatte oder einen anderen Cloudserver zu kopieren, etwa für Backups. Das Kommandozeilentool rclone kann Dateien von vielen Onlinediensten verarbeiten, darunter Nextcloud/Owncloud (über Webdav), Dropbox oder Google Drive. Außerdem beherrscht das Tool SFTP und FTP. Die Vorteile: Sie können für Backups über einheitliche Befehle Dateien aus unterschiedlichen Quellen auf die Festplatte kopieren und auch von einem Cloudspeicher zum anderen umziehen.

Zur Installation verwenden Sie diese Befehlszeile:

curl https://rclone.org/install.sh | sudo bash  

Danach rufen Sie diesen Befehl auf:

rclone config  

Ein einfaches Menü führt Sie durch die nötigen Schritte. Über „n) New Remote“ legen Sie eine aussagekräftige Bezeichnung für den Dienst fest, beispielsweise „nextcloud“. Danach geben Sie den Speichertyp an („24“ für Webdav) und die URL des Servers. Geben Sie den Anbieter an („1“ für Nextcloud) sowie Benutzername und Passwort. Bestätigen Sie die Einstellungen mit „y“ und verlassen Sie die Konfiguration mit „q“. Bei einer SFTP-Quelle läuft die Konfiguration entsprechend ab (Speichertyp „23“).

Erstellen Sie dann ein Verzeichnis, das die Dateien vom Server aufnehmen soll: mkdir ~/Team.sync Danach führen Sie diese Befehlszeile aus:

rclone copy -u -vv nextcloud:Team ~/ Team.sync  

„nextcloud“ ist die bei der Konfiguration vergebene Bezeichnung für den Dienst und „Team“ ein Ordner auf dem Cloudserver. Verwenden Sie „/“, wenn Sie alle Ordner und Dateien kopieren wollen. Schalter „-u“ sorgt dafür, dass rclone nur Dateien kopiert, die neuer oder noch nicht vorhanden sind. „-vv“ bewirkt eine ausführliche Ausgabe im Terminalfenster.

Sollen die Dateien in die andere Richtung wandern, vertauschen Sie Quelle und Ziel:

rclone copy -u -vv ~/Team.sync nextcloud:Team  

Bei Verwendung von „copy“ löscht rclone keine Dateien und überschreibt nur ältere. Ein Problem taucht auf, wenn sich eine Datei sowohl auf der lokalen Festplatte als auch auf dem Server geändert hat. Auch dann überschreibt rclone die ältere mit der neueren Datei. Für mehr Sicherheit hängen Sie die Option „--backup-dir nextcloud:Backup“ an.

Die ältere Version verschiebt das Tool dann in den Ordner „Backup“ auf dem Server. Bei der umgekehrten Richtung vom Server auf den PC verwenden Sie die Option wie im folgenden Beispiel

rclone copy -u -vv nextcloud:Team ~/ Team.sync --backup-dir ~/Team.bak  

für einen lokalen Ordner.

PC-WELT Marktplatz

0 Kommentare zu diesem Artikel
2077857