ubuntuusers.de

ubuntuusers.deWikiFUSEsshfs

sshfs

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

sshfs {en} ist ein FUSE-Modul, mit dem man entfernte Rechner über SSH in das eigene Dateisystem einbinden kann. Der Vorteil gegenüber einer ssh-Shell ist, dass man damit die Dateien und Verzeichnisse auf dem entfernten Rechner sehr komfortabel editieren, kopieren oder verschieben kann – genau wie die Dateien und Verzeichnisse auf den lokalen Festplatten. Dies erfordert auf dem Server ein sftp-Programm. Das ist bei den meisten SSH-Servern, wie OpenSSH, standardmäßig dabei, aber auf einigen embedded Geräten, wie OpenWRT sind dafür extra Pakete notwendig.

Installation

Folgendes Paket muss installiert [1] werden:

  • sshfs (universe [2] )

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install sshfs 

sudo aptitude install sshfs 

Benutzung

Vor dem Ausführen von sshfs muss FUSE eingerichtet sein [6] und ein Verzeichnis erstellt werden, in welches der entfernte Rechner eingehängt werden soll. Außerdem muss der Benutzer, unter dem sshfs verwendet werden soll, als Mitglied der Gruppe fuse eingetragen werden. Im folgenden wird von ~/fusessh als Verzeichnis für den entfernten Rechner ausgegangen.

Das Einhängen erfolgt im Terminal [3] über folgenden Befehl, vorher sollte aber noch ein Ordner Namens fusessh erstellt werden:

mkdir ~/fusessh 
sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh 

Falls ein Passwort für die Verbindung erforderlich ist, wird in der Konsole eine Abfrage erscheinen. Das Aushängen erfolgt analog zu den anderen FUSE-Modulen mit:

fusermount -u ~/fusessh 

Hinweis:

sshfs unterstützt nur Hardlinks zu OpenSSH Servern ab Version 5.7 oder neuer. Ältere ssh Server unterstützen dies nicht. Es ist dann also nicht möglich sshfs für ein Backup mit dirvish oder ähnlichen zu nutzen. Die OpenSSH Version kann ermittelt werden indem man sich per ssh auf dem Server einloggt und /usr/sbin/sshd -v eingibt.

Optionen

sshfs bietet eine Reihe von Optionen wie z.B. -p 222, falls der SSH-Server auf Port 222 lauschen sollte. Mit den Optionen -o idmap=user -o uid=USERID -o gid=GROUPID kann man "User Mapping" aktivieren. Dies ist hilfreich, falls die auf dem Server gespeicherten Dateien einen Eigentümer haben, der auf dem Client nicht vorhanden ist. Beispiel:

sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh -o idmap=user -o uid=$(id -u) -o gid=$(id -g) 

Eine genaue Übersicht der Parameter kann man in der Manualseite von sshfs nachlesen.

Automount

Falls man das Dateisystem automatisch beim Systemstart oder bei der Anmeldung einbinden lassen will, muss man die SSH-Authentifizierung über Public-Keys einrichten. Man ist nun nicht mehr gezwungen, das Serverpasswort einzutippen. Wichtig ist beim Mounten während des Systemstarts, dass die Private-Keys sich im Root-Verzeichnis /root/.ssh/ befinden, da ansonsten keine Authentifzierung durch den root beim Start stattfinden kann.

Beim Systemstart

In der Datei /etc/fstab muss mit Root-Rechten in einem Editor [4] eine Zeile hinzugefügt werden:

sshfs#Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh fuse uid=1003,gid=100,umask=0,allow_other,_netdev 0 0

Der Parameter _netdev ist wichtig, da das System sonst beim Booten nicht weiß, dass eine funktionierende Netzwerkverbindung zum Einbinden der Partition erforderlich ist.

Nach der Anmeldung eines Users

Den sshfs-Befehl

sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh 

muss man dazu bei jeder Anmeldung automatisch ausführen lassen [5].

sshfs hängt sich auf - timeout

Achtung!

Es kann sein, dass sich die Verbindung mit sshfs nach einer Weile aufhängt und nicht mehr reagiert, obwohl das Mounten geklappt hatte und man auch auf die Dateien und Ordner auf dem anderen Rechner zugreifen konnte.

Laut FUSEWiki {en} gibt es dafür zwei Lösungsansätze:

1) In der Datei .ssh/config folgende Zeile hinzufügen (liegt im Homeverzeichnis des User bzw. wenn man Automount beim Systemstart macht ist die Datei /root/.ssh/config zu ändern):

ServerAliveInterval 15

Falls die Datei config nicht existiert wird sie einfach neu angelegt.

2) Oder man fügt beim obenstehenden sshfs-Befehl die Option -o ServerAliveInterval=15 ein. Dieser Lösungsansatz wurde zwar nicht laut FUSEWiki {en} getestet, aber sollte theoretisch auch funktionieren.

sshfs -o ServerAliveInterval=15 Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh 

Diese sollte die ssh-Verbindung aufrecht erhalten, auch wenn über einen längeren Zeitraum keine Aktivitäten stattfinden.

Diese Revision wurde am 18. Januar 2014 14:33 von kizu erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System