Wie kann ich ein Verzeichnis über SSH einbinden?
Am einfachsten bindet man ein SSH Verzeichnis über Nautilus ein. Dafür geht man einfach auf “Mit Server verbinden” und gibt die angeforderten Daten an. Das ganze hat aber einen Hacken. Dieses Verzeichnis kann nur mit Gnome Verzeichnissen genutzt werden. Es ist also nicht möglich auf dieses Verzeichnis mit z.B. Eclipse oder ZDE (beides in Java geschriebene Programme) darauf zuzugreifen. Eine allgemeingültige Nutzung erreicht man, wenn man das Verzeichnis mit Hilfe von fuse einbindet. Das Verzeichnis wird über den mount Befehl eingebunden. Die Anwendungsprogramme bekommen sozusagen gar nicht mit, dass dieses Verzeichnis ein über SSH eingebundenes Verzeichnis ist.
Ich verwende für die nachfolgende Anleitung Gentoo Linux, um die Installation, Konfiguration und Anwendung aufzuzeigen.
Installation
Zuerst muss man das Paket sshfs-fuse installieren:
emerge sshfs-fuse
Damit fuse auch funktioniert, muss natürlich im Kernel die fuse Unterstützung aktiviert sind. Wenn man eine andere Linux Distribution wie Gentoo verwendet, muss die Installation von sshfs dementsprechend abgeändert werden. Die weitere Vorgehensweise sollte sich bei anderen Distributionen nicht unterscheiden.
Konfiguration
Nun legen wir ein Verzeichnis an, in dem wir das entfernte Verzeichnis einbinden wollen
mkdir /mnt/www.meinedomain.de
Wichtig ist, dass man auf das neu erstellte Verzeichnis die Rechte so vergibt, dass auch normale Benutzer in dieses Verzeichnis schreiben dürfen. Anderfalls kann nur Root das Verzeichnis einbinden oder es müssen die Parameter in der /etc/fstab angepasst werden.
Um das Verzeichnis komfortabel einhängen zu können, muss in die Datei /etc/fstab folgendes hinzugefügt werden:
sshfs#alex@www.meinedomain.de:/httpdocs /mnt/meinedomain.de fuse user,noauto,rw,uid=501,gid=100 0 0
Mit dieser Anweisung wird erreicht, dass der Benutzer alex vom Host www.meinedomain.de das Verzeichnis /httpdocs in das Verzeichnis /mnt/meinedomain.de eingehängt wird. Der Benutzer alex muss auf dem Zielrechner einen gültigen Account und einen SSH Zugang besitzen. Über uid und gid wird der Benutzer und die Gruppe des Dateisystems festgelegt.
Benutzerrechte vergeben
Damit ein normaler Benutzer das Verzeichnis einbinden kann, muss man die Gruppe crypto anlegen und die authorisierten Benutzer dieser Gruppe zuordnen.
groupadd crypto
usermod -aG crypto $DEIN_BENUTZERNAME
Damit die udev auch die Gruppe berücksichtigt, muss noch eine kleine Änderung vorgenommen werden:
mv /etc/udev/rules.d/99-fuse.rules /etc/udev/rules.d/40-fuse.rules
Dadurch wird erreicht, dass fuse.rules vor udev.rules ausgeführt wird. Mit dem Befehl
udevstart
aktiviert man die Änderungen.
Verzeichnis einbinden
Nun sollte man das Verzeichnis mit
mount /mnt/www.meinedomain.de
einbinden können. Normalerweise wird man dabei nach dem Kennwort gefragt. Wenn man mit der SSH-Key-Authentifizierung arbeitet, erspart man sich das eingeben des Kennwortes beim Einbinden.
Hinweise
Das Einbinden über die Shell funktioniert mit einem normalen Benutzer-Account ohne Problem. Leider klappt das Einbinden über den Nautilus nicht, den Grund habe ich noch nicht herausfinden können. Der Zugriff auf das eingebundene Verzeichnis funktioniert aber auch mit Nautilus ohne Probleme!
Falls man beim Einbinden die Fehlermeldung fusermount: failed to open /dev/fuse: Permission denied erhält, ist etwas mit udev und den Benutzerrechten nicht in Ordnung. Es könnte erforderlich sein, dass man die Datei /etc/udev/rules.d/40-fuse.rules entsprechend anpassen muss (was bei mir nicht erforderlich war).
Ein Verzeichnis über SSH einzubinden ist auf jeden Fall eine interessante Alternative zu WebDAV, Samba oder gar NFS - die Verbindung findet verschlüsselt statt und die Performance ist auch noch tragbar.