Pro und Contra

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

07.07.2015
Von 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. Die Beschreibungen gelten für Ubuntu 14.04 und ähnliche Systeme. Bei anderen Linux-Distributionen können Paketnamen und Dateipfade abweichen.

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:~/

Testen Sie Ihr Wissen!

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.
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.