SSHFS – Remote Dateisystem sicher einbinden

Was ist SSHFS?
SSHFS ist ein FUSE-Modul, mit dem man entfernte Server über SSH in das eigene Dateisystem einbinden kann. Man kann mit diesem Modul, Dateien und Verzeichnisse auf dem entfernten Rechner editieren, kopieren oder verschieben. Wenn man eine stabile Verbindung hat,ist es so wie wenn die Dateien und Verzeichnisse auf dem lokalen Computer liegen.

Installation

sudo apt-get install sshfs 

Benutzung

Wenn du nun das entfernte System einhängen möchtest, brauchst du erst mal einen leeren Ordner.
In diesem Beispiel legen wir einen Ordner Namens /storage an.

sudo mkdir /storage 

Das Einhängen erfolgt im Terminal über folgenden Befehl, vorher haben wir einen Ordner namens /storage erstellt:

sshfs Nutzername@IPAdresse/subdomain:/pfad_auf_dem_entfernten_server/ /storage 

Bei meinem Test Server sieht das dann so aus:

sshfs testuser01@test01.cy3er.de:/media/st01 /storage

Wenn der Befehl ohne Fehler ausgeführt wird, wird der Inhalt des entfernten Verzeichnisses /storage unter dem lokalen Verzeichnis angezeigt. Die Berechtigungen, die du auf dem entfernten Verzeichnis hast, sind die Berechtigungen, die der entfernte Benutzer hat: Standardmäßig werden lokale Rechte von SSHFS ignoriert.
Das bedeutet, dass selbst wenn die UID des lokalen und des entfernten Benutzers nicht gleich sind, wie in diesem Fall, kannst du die Operation trotzdem durchführen. Wenn wir etwas innerhalb des gemounteten Verzeichnisses bearbeiten, tun wir es als der entfernte Benutzer, mit dem wir uns verbunden haben.

Anderen Benutzern den Zugriff auf den Mountpoint erlauben

sshfs testuser01@test01.cy3er.de:/media/st01 /storage -o allow_other

Verwendung eines alternativen Ports für die SSH-Verbindung

sshfs testuser01@test01.cy3er.de:/media/st01 /storage -p13120

Wenn der SSH-Port an deinem System nicht der Standartport 22 ist kannst du via -p[deinPort] eine Verbindung mit deinem Port aufbauen.

Einhängen des entfernten Verzeichnisses beim Booten

Hier gibt es einiges zu beachten. Das erste ist, dass du fuse.sshfs als Dateisystem verwendest.
Zweitens haben wir die Einhängeoption IdentityFile verwendet, um den Pfad eines SSH-Schlüssels anzugeben. Das automatische mounten beim Start des Systems kann nur dann automatisch funktionieren, wenn die Verbindung ohne Passworteingabe funktioniert. Das lässt sich mit einem SSH-Schlüssel realisieren.
Hier haben ich den IdentityFile „privatekey“ aus dem Verzeichnis „/home/user01/.ssh/privatekey“ genutzt.
Den Public Key musst du vorher in der Datei /home/testuser01/.ssh/authorized_keys auf dem Remoteserver hinterlegen.

testuser01@test01.cy3er.de:/media/st01 /storage fuse.sshfs defaults,IdentityFile=/home/user01/.ssh/id_rsa,allow_other,default_permissions 0 0

Dieser Befehl muss nun noch in die Datei /etc/fstab geschrieben werden.

sudo nano /etc/fstab

Mit diesem Befehl kannst du die Konfigurationsdatei /etc/fstab öffnen.

Dort trägst du dann deinen Befehl zum automatischen verbinden ein.
Das kann dann etwa so aussehen, natürlich mit deinen Werten.

Um zu testen ob das funktioniert hat, kannst du deinem System folgenden Befehl übergeben

sudo mount -a 

Mit dem Befehl „df -h“ kannst du dir alle Speichermedien und ihrem Verbrauch anzeigen lassen

Aushängen des entfernten Verzeichnisses
Mit dem folgenden Befehl lässt sich das mit SSHFS eingebunden Remote Verzeichnis wieder trennen.

fusermount -u /storage

Fazit

Also ich selbst nutze diese Technik schon eine ganze Weile um meine restic Backups auf einem entfernten Server zu kopieren. Das funktioniert auch ohne Probleme. Wenn dir ein Fehler auffällt dann schreib mir gern eine Nachricht über mein Kontaktformular.