Verschlüsseltes Netzwerkdateisystem SSHFS unter FreeBSD
Wenn NFS nicht in Frage kommt, lassen sich entfernte Dateisysteme via sshfs unter FreeBSD (natürlich auch unter anderen Betriebssystemen) einbinden.
Voraussetzung natürlich: Auf dem entfernten Rechner muss ein ssh-Dämon laufen. Der Port sysutils/fusefs-sshfs ist auf dem lokalen Rechner schnell installiert.
Vorbereitung
Für sshfs wird fuse benötigt. Dieser Port, sowie das Kernel-Modul sollte also schon installiert sein. In die /etc/rc.conf nun folgende Zeile einfügen:
fusefs_enable="YES"
Der Dienste muss natürlich jetzt noch auf dem üblichen Weg gestartet werden. Bei Problemen mit dem Kernel Modul lohnt es sich, den Port sysutils/fusefs-kmod neu zu bauen. Will man sshfs als normaler User nutzen, fehlt vielleicht noch
# sysctl vfs.usermount=1
Permanent wird dieser Eintrag mit der folgenden Zeile in der Datei /etc/sysctl.conf
vfs.usermount=1
Als letzten fehlen für einen normalen User noch die Rechte für das Device /dev/fuse0. Wenn man alle User, die Lese- und Schreibrechte haben dürfen, der Gruppe operator zufügt, ist dies erledigt.
Es gibt nun 2 Wege, ein entferntes Verzeichnis einzubinden:
1. sshfs als normaler Benutzer
Voraussetzung: Auf dem entfernten Rechner steht ein Account zur Verfügung. Dann kann man mit der allgemeinen Befehlszeile
sshfs -o idmap=user username@example.org:/path /path/to/mount/point
also z.B.
$ mkdir ~/mnt $ sshfs -o idmap=user username@example.org:/usr/local/www ~/mnt
Nach Eingabe des Passworts ist das entfernte Verzeichnis via ssh gemountet.
2. sshfs als root via mount_fusefs
Als root mit der Zeile
mount_fusefs auto /path/to/mount/point sshfs -o idmap=user username@example.org:
Also z.B.
# mount_fusefs auto /mnt sshfs -o idmap=user username@example.org:
Fehlermeldungen
Es empfiehlt sich vor dem Mounten einmal den Anmeldeprozess durchzuführen:
# ssh username@example.org
damit der Schlüssel der Liste der bekannten Hosts hinzugefügt werden kann. Der mount-Befehl kann diesen Schritt nicht durchführen.
Beim Versuch mount_fusefs als root auszuführen und auf das User-Verzeichnis auf dem entfernten Rechner zuzugreifen, kann folgendes Fehlerbild erscheinen:
# mount_fusefs auto /mnt sshfs -o sshfs_debug,idmap=user username@example.org: # SSHFS version 2.2 Password: Password: Password: remote host has disconnected
ohne dass man die Möglichkeit hat, ein Kennwort einzugeben. Auf dem entfernten Rechner steht in /var/log/messages:
sshd[19152]: error: PAM: authentication error for username from XXX.XXX.XXX.XXX
Dies kann umgangen werden, indem man mit ssh-keygen ein Schlüsselpaar erzeugt und den öffentlichen Schlüssel auf den entfernten Rechner kopiert, z.B. als root mit
# ssh-keygen # cat /root/.ssh/id_rsa.pub | ssh username@example.org 'cat >> .ssh/authorized_keys'
Das setzt natürlich voraus, dass im Homedirectory des Users das Verzeichnis .ssh existiert.
Weitere Fehlerquellen:
- /dev/null hat nicht die Rechte 0666
- Auf dem entfernten Rechner ist in der sshd_config das sftp Subsystem deaktiviert
- Auf dem entfernten Rechner ist in der sshd_config UsePAM deaktiviert