sshfs

Aus wiki.archlinux.de
Wechseln zu: Navigation, Suche

Dieser Artikel behandelt die Einrichtung von sshfs. Der Artikel ist eine Übersetzung des englischen Originals, zu finden hier: [1]

Einleitung

sshfs kann verwendet werden um eine Partition auf einem entfernten Rechner über das ssh-Protokoll so zu mounten, dass sie als ein lokaler Ordner erscheint. So wird es möglich alle Werkzeuge zu verwenden die man auch auf seine lokalen Dateien anwenden kann. sshfs sollte gegenüber shfs bevorzugt werden, da seit 2004 kein neues Release von shf herrausgebracht wurde.

Installation

Das Programm ist als sshfs in extra verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S sshfs

Verwendung

Zuerst sollte das Kernelmodul fuse geladen sein. Also als root:

# modprobe fuse

(Um das Modul automatisch beim booten zu laden kannst du fuse natürlich auch in die Modul-Liste der /etc/rc.conf eintragen))

Mounten

Um ein entferntes Verzeichnis zu mounten verwendest du den Befehl sshfs:

# sshfs USERNAME@HOSTNAME_ODER_IP:/PFAD LOKALER_MOUNT_POINT SSH_OPTIONEN

Zum Beispiel:

# sshfs sessy@mycomputer:/home/sessy /mnt/sessy -C -p 9876

Wobei 9876 die Portnummer ist.

Bevor du dich verbindest solltest du auch darauf achten, die Berechtigungen für alle Clientordner richtig einzustellen, die du von einem entfernten Rechner aus mounten willst. Was bedeutet, dass root nicht der Besitzer sein sollte!

SSH wird dich nach dem Benutzerpasswort fragen. Wenn du das Passwort nicht ständig neu eingeben willst lies das: How to Use RSA Key Authentication with SSH.

Aushängen

Um das entfernte System wieder auszuhängen:

# fusermount -u LOKALER_MOUNT_POINT

Zum Beispiel:

# fusermount -u /mnt/sessy

Tipps

Um schnell ein entferntes Verzeichnis zu mounten tu das in ein Skript

sshfs USERNAME@HOSTNAME_OR_IP:/PATH LOCAL_MOUNT_POINT SSH_OPTIONS
mc ~ LOCAL_MOUNT_POINT
fusermount -u LOCAL_MOUNT_POINT

Das mountet das entfernte Verzeichniss, öffnet den MC und hängt es wieder aus wenn du ihn wieder schließt.

Thunar hat Probleme mit FAM und enfernten Verzeichnissen. Wenn er die entfernten Ordner nicht anzeigen sollte oder andere Probleme damit auftauchen sollten, dann ersetze einfach fam durch gamin. Gamin ist eine Weiterentwicklung von fam.

pacman -S gamin
vim /etc/rc.conf  #entferne fam unter DEAMONS

Problembehebung

Connection reset by peer

  • Wenn du versucht hast die Verbindung mit dem Hostnamen aufzubauen versuche es über die IP, da es ein Problem mit dem Domainnamen sein kann. Stelle sicher, dass der Server in der Datei /etc/hosts eingetragen ist.
  • Wenn du nicht standardmäßigen Schlüsselnamen verwendest und es auf folgende Weise machen solltest -i .ssh/my_key, wirst du feststellen das es nicht funktioniert. Du musst -o IdentityFile=/home/user/.ssh/my_key mit dem vollen Pfad zum Schlüssel verwenden
  • Füge die Option 'sshfs_debug' hinzu ('sshfs -o sshfs_debug user@server ...'). Dies kann das Problem eingrenzen.
  • Wenn du versuchst sshfs in einem Router wie dem DD-WRT (oder Ähnliches)zu betreiben findest du hier die Lösung.
  • Forum thread: sshfs: Connection reset by peer

fstab

Ein Beispiel wie sshfs verwendet werden sollte wenn man es das entfernte Dateisystem über /etc/fstab mounten will

sshfs#USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY /LOCAL/MOUNTPOINT fuse defaults 0 0

Obschon das obere nicht automatisch funktionieren wird, wenn du keinen ssh key für den Benutzer verwendest

Wenn du sshfs für mehrere Benutzer des Systems verwenden willst:

sshfs#user@domain.org:/home/user  /media/user   fuse    defaults,allow_other    0  0

Anmerkung Mit der oberen Methode wird umount zurückgeben, dass das Filesystem nicht in der fstab enthalten ist. Um dies zu umgehen, entferne den 'sshfs#' prefix, ändere das Filesystem von 'fuse' zu 'fuse.sshfs', und erstelle das Skript '/sbin/mount.fuse.sshfs':

#!/bin/bash
DEVICE="$1"
MOUNTPOINT="$2"
OPTIONS="$4"

OPTIONS="${OPTIONS/,noauto/}"
OPTIONS="${OPTIONS/,user/}"

# workaround to conflicting 'user' options
# in fstab, specify 'login=joe' instead of 'user=joe'
OPTIONS="${OPTIONS/,login=/,user=}"

exec /usr/bin/sshfs "$DEVICE" "$MOUNTPOINT" -o "$OPTIONS"

Siehe auch

Weblinks