Das SSH-Dateisystem (SSHFS): Verzeichnisse unter Linux über eine SSH-Verbindung mounten

In dieser Anleitung zeige ich euch, wie sich mit dem Dateisystem SSHFS (Secure Shell File System) über eine sichere SSH-Verbindung, Verzeichnisse von einem Remote-Computer als lokales Dateisystem mounten lassen. Mit SSHFS können wir Benutzerdateien und Verzeichnisse eines entfernen Computer genauso, wie lokale Dateien behandeln. Kopieren, Lesen und Schreiben, als würden wir nicht Remote, sondern direkt am System arbeiten.

So etwas geht über SSH?

Ja, es ist nicht zwingend erforderlich, Netzwerkprotokolle wie SMB oder NFS auf dem Computer zu installieren, um unter Linux Verzeichnisse von entfernten Computern/Servern einzubinden. Überdies ist die Implementierung von SSHFS für verschiedene Betriebssysteme verfügbar. Ob Linux, Windows oder macOS. Die Installation ist einfach und unkompliziert, da SSFHS auf dem FUSE-Modul basiert und zum festen Bestandteil der meisten Standard-Repositorys gehört.

Was erledigen wir in diesem Tutorial?

Ich erkläre euch, wie SSHFS unter den gängigsten Linux Distributionen installiert werden kann und wie sich ein entferntes Verzeichnis mounten lässt.

Hinweis: Das Secure Shell File System ist ein ziemlich kleines Projekt mit gerade mal einem einzigen Entwickler, der das Projekt im Mai 2022 selbst verlassen hat und seitdem einen Nachfolger für die Weiterentwicklung sucht. Auch wenn SSHFS eine verschlüsselte Verbindung verwendet und als relativ robust und sicher gilt, werden im aktuellen Zustand weder Fehler noch Sicherheitslücken beseitigt. Angesichts dessen empfehle ich, vorerst keine Verwendung dieser Methode über den privaten Gebrauch hinaus. Mir sind jedoch auch größere Projekte bekannt, die nach wie vor auf diese geniale Lösung vertrauen.

Möchtest du Linux-Verzeichnisse lieber über NFS mounten? In dieser Anleitung erfährst du, wie ein NFS-Server unter Linux installiert wird.

Inhaltsverzeichnis: Das SSH-Dateisystem (SSHFS) installieren und Verzeichnisse über eine SSH-Sitzung mounten

SSHFS Installation auf einem Linux-Hostsystem (Ubuntu, Debian, Fedora und Arch Linux)

Zum Zeitpunkt der Beitragserstellung, über die Installation von SSHFS unter Linux, kann die Open-Source-Software für jede große Distribution aus den offiziellen Repositorien heruntergeladen und installiert werden. Das könnte sich aber bald schon ändern, da die Zukunft von SSHFS bisher nicht ganz gewiss ist, wie ich anfänglich bereits erwähnt habe.

Da die meisten Distributionen ab Werk aus mit unterschiedlichen Paketmanagern ausgerüstet sind, folgt eine Beschreibung, mit der wir unter fast allen Linux-Betriebssystemen SSHFS installieren können.

Mit diesem Befehl kannst du SSHFS auf deinem Hostsystem installieren:

Debian/Ubuntu:

Fedora:

Archlinux:

apt install sshfs
dnf install fuse-sshfs
pacman -S sshfs

Sobald SSHFS erfolgreich auf deinem Hostsystem installiert wurde, kann ein Zugriff auf das Dateisystem eines entfernten Computers/Servers über das Terminal erfolgen. Die Befehlsanweisung (Syntax) sieht wie folgt aus:

sshfs [Benutzer]@IP-Adresse:[Verzeichnis, dass gemountet werden soll] Einhängepunkt [Argumente für zusätzliche Optionen]

Im nächsten Abschnitt erfolgt ein Praxisbeispiel mit ausführlichen Beschreibungen, wie sich ein Verzeichnis von einem Server auf einem Client über SSH mounten lässt. Ich wollte in diesem Beispiel nur einmal die grundlegende Syntax anzeigen.

So kann ein Verzeichnis über SSH gemountet und verwendet werden (Remote-Zugriff auf das Dateisystem)

Mit dem SSH-Protokoll dürften die meisten bereits vertraut sein. Demzufolge ist die Vorgehensweise, um ein Verzeichnis über SSHFS zu mounten, mit einem gewöhnlichen SSH-Sitzungsaufbau fast identisch, wie du gleich feststellen wirst.

So funktioniert der Remote-Zugriff auf das Dateisystem über SSHFS:

Optional besteht die Möglichkeit, einen Benutzer anzugeben, falls wir auf ein bestimmtes Verzeichnis zugreifen möchten. Lassen wir den Benutzernamen weg, wird standardgemäß der lokale Linux-Benutzername vom System verwendet. Erstelle zunächst ein Mount-Point-Verzeichnis unter Linux. In diesem Verzeichnis werden wir das Home-Verzeichnis eines entfernten Computers über SSHFS einhängen.

Wir simulieren der einfachheitshalber mal das folgende Szenario:

Wir befinden uns an einem Client und möchten uns einen Fernzugriff auf ein bestimmtes Verzeichnis eines laufenden SSH-Servers ermöglichen. Der Zielserver hat die IP-Adresse 192.168.178.100. Unser Ziel ist es nun, das Verzeichnis /home vom Server auf den Client einzuhängen. Wie wir jetzt vorgehen müssen, soll das folgende Beispiel erläutern.

Mount-Point-Verzeichnis erstellen:

mkdir /home/user/sshfs_mount

Ein Remote-Verzeichnis über SSHFS mounten:

sshfs user@192.168.178.100:/home /home/user/sshfs_mount

Navigieren wir jetzt mit dem cd-Befehl in das soeben erstellte Verzeichnis, wird dort das gewünschte Dateisystem vom entfernten Server gemountet sein.

Wechsel in das eingebundene Verzeichnis vom Remote-Server:

cd /home/user/sshfs_mount

Verwende den Befehl für die Auflistung aller im Verzeichnis befindlichen Dateien und validiere den Zugriff:

ls -h

Welche Privilegien haben wir auf das gemountete Verzeichnis?

Wir besitzen alle Berechtigungen zum Lesen, Schreiben, Löschen und Kopieren von Dateien. Standardgemäß werden die lokalen Berechtigungen von SSHFS ignoriert. Das ist einer der größten Besonderheiten von diesem Protokoll. Führen wir in dem gemounteten Verzeichnis eine Aktion durch, tun wir dies standardgemäß als der Remote-Benutzer, mit dem wir uns über den SSHFS-Befehl angemeldet haben.

Würdest du jetzt den Benutzer am System wechseln, würde der Zugriff allerdings aufgrund fehlender Berechtigungen abgelehnt werden. Es gibt jedoch eine Möglichkeit, auch anderen Benutzern einen Zugriff auf das Remote-Verzeichnis (Mount-Point) zu gewähren. Das ist praktisch, verwenden wir auf einem Server mehr als nur einen Systembenutzer.

Allen Benutzern einen Zugriff auf das über SSHFS eingebundene Remote-Verzeichnis gewähren

Ohne entsprechende Konfiguration hat immer nur der Benutzer Zugriff auf das gemountete Verzeichnis, der den Befehl zum Einhängen des Dateisystems durchgeführt hat. Das hat Sicherheitsgründe. Es kann aber gewünscht sein, dass alle System-Benutzer einen Zugriff auf das gemountete Remote-Verzeichnis haben sollen (einschließlich root).

Dafür können wir den SSHFS-Mount-Befehl mit der Option: „allow_other“ erweitern. Bevor die Option verwendet werden kann, müssen wir zunächst die FUSE-Konfigurationsdatei öffnen und die Kommentarfunktion vor der Zeile entfernen, die uns diese Option erlaubt.

Öffne die FUSE-Konfigurationsdatei mit dem Nano- oder VI-Editor:

nano /etc/fuse.conf

Suche in dem Segment nach der Zeile „user_allow_other“ und entferne die Kommentarfunktion am Beginn der Zeile (#):

# mount options

user_allow_other

Jetzt wurde die Option aktiviert. Speichere die Änderungen ab (STRG + S) und verlasse die Datei wieder (STRG + X).

Mounten wir das Remote-Verzeichnis nun mit der Verwendung des „allow_other“ Arguments, erhalten alle Nutzer vollen Zugriff auf das gemountete Dateisystem:

sshfs user@192.168.178.100:/home /home/user/sshfs_mount -o allow_other

Welcher Port wird vom Secure-Shell-File-System verwendet und kann dieser auch geändert werden?

Standardmäßig lauscht der SSH-Server auf den Port 22. Unabhängig davon, ob wir eine SSH-Sitzung mit dem Zielsystem herstellen oder SSHFS für den Remote-Zugriff auf das Dateisystem verwenden. Wir können den Port ebenfalls über ein Argument verändern. Erweitern wir den Mount-Befehl mit dem -p Argument, können wir einen individuellen Port für den Zugriff bestimmen.

Ein entferntes Verzeichnis über SSHFS mounten und einen individuellen Port (2560) verwenden:

sshfs user@192.168.178.100:/home /home/user/sshfs_mount -p 2560

Ein Verzeichnis über SSHFS automatisch bei Systemstart mounten mit fstab

Im aktuellen Zustand müssten wir jedes Mal, wenn wir das Remote-Verzeichnis auf unserem Linux-System mounten möchten, den Befehl erneut ausführen. Damit der Zugriff auf das entfernte Verzeichnis dauerhaft bestehen bleibt, können wir den Mount-Befehl in die fstab-Datei einpflegen. Ähnlich wie wir das auch mit SMB-Freigaben oder über NFS geteilte Ordner und Verzeichnisse erledigen würden.

Verwende den Nano-Editor und öffne die fstab-Datei, um ein Verzeichnis automatisch nach dem Bootvorgang zu mounten:

nano /etc/fstab

Füge die folgende Mount-Anweisung in die Datei ein:

user@192.168.178.100:/home home/user/sshfs_mount fuse.sshfs defaults,IdentityFile=/home/user/.ssh/id_rsa,allow_other

Sobald die Änderungen abgespeichert wurden, wird das entfernte Verzeichnis vom Server automatisch nach einem System- oder Neustart gemountet werden. Wir sind in diesem Beitrag auf eine wirklich gute Alternative zu SMB und NFS eingegangen.

Der Dateizugriff über SSH bringt tatsächlich einige Vorteile mit sich und erreicht ausgezeichnete Übertragungsgeschwindigkeiten bei einer nach wie vor guten Verschlüsselung. Hoffen wir, dass die Entwicklung weitergeht und sich ein oder mehrere Entwickler finden werden, die motiviert an dem SSH-Filesystem arbeiten, sodass wir uns auch in Zukunft dieser tollen Möglichkeit erfreuen können.

1 Kommentar on “Das SSH-Dateisystem (SSHFS): Verzeichnisse unter Linux über eine SSH-Verbindung mounten

  1. Super einfach, Danke.
    So beschrieben sollten Anleitungen sein, verständlich für jemanden der eigentlich alles nur einfach benötigt.
    Seit Jahren habe ich ein Lösung wie diese gesucht, in drei Minuten installiert und getestet.
    Ich war schon verzweifelt, alles immer über ssh und mc machen zu müssen.
    Nochmals Danke für diese Erklärung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert