Zum Inhalt springen

Sshfs: Unterschied zwischen den Versionen

Aus Foxwiki
 
(74 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{DISPLAYTITLE:sshfs}}
'''sshfs''' - [[FUSE]]-Modul zur Einbindung entfernter Verzeichnisse in das lokale Dateisystem
'''topic''' kurze Beschreibung


== Beschreibung ==
== Beschreibung ==
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.
Entfernte Dateien und Verzeichnisse wie lokale bearbeiten
=== Anforderungen ===
* [[sftp]]-Server


Dies erfordert auf dem Server ein sftp-Programm.
[[sshfs]] benutzt [[FUSE]] (Filesystem in USErspace)
* Dateisystemclient, der auf dem SSH-Dateiübertragungsprotokoll basiert


Das ist bei den meisten SSH-Servern, wie OpenSSH, standardmäßig dabei, aber auf einigen embedded Geräten, wie OpenWRT, sind dafür spezielle Programm-Pakete notwendig.
Da die meisten SSH-Server dieses Protokoll unterstützen, ist er sehr einfach einzurichten
 
* Serverseite ist nichts zu tun
; Hinweis
* Clientseitig ist das Einhängen des Dateisystems so einfach wie das Einloggen am Server mittels ssh
:* Der einzige aktive Entwickler hat das Projekt am 26.05.2022 verlassen und die zugehörige [:Git:Github]-Seite gesperrt.
:* Fehler und damit auch Sicherheitslücken werden nicht mehr beseitigt, dies sollte man bedenken falls sensible Daten per sshfs transportiert werden sollen.
:* Siehe [https://github.com/libfuse/sshfs/blob/master/README.rst Ankündigung]
:* https://github.com/libfuse/sshfs


== Installation ==
== Installation ==
# apt install sshfs
<syntaxhighlight lang="bash" highlight="1" copy>
sudo apt install sshfs
</syntaxhighlight>


== Anwendungen ==
; Vor dem Ausführen von sshfs
; Vor dem Ausführen von sshfs
* FUSE muss eingerichtet sein
* [[FUSE]] muss eingerichtet sein
* Verzeichnis erstellen, in welches das entfernte Verzeichnis eingehangen werden soll
* [[Verzeichnis]] erstellen, in welches das entfernte Verzeichnis eingehangen werden soll
* Benutzer muss Mitglied der Gruppe '''fuse''' sein
* Benutzer muss Mitglied der [[Gruppe]] '''fuse''' sein


; Einhängen eines entfernten Verzeichnisses
== Aufruf ==
$ '''mkdir ~/fusessh'''
<syntaxhighlight lang="bash" highlight="1" line copy>
$ '''sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh'''
</syntaxhighlight>


Falls ein Passwort für die Verbindung erforderlich ist, erscheint in der Konsole eine Abfrage.
=== Optionen ===
{| class="wikitable sortable options gnu big"
|-
! Unix !! GNU !! Parameter !! Beschreibung
|-
| || || ||
|-
|}


; Aushängen eines entfernten Verzeichnisses
=== Parameter ===
$ '''fusermount -u ~/fusessh'''
=== Umgebungsvariablen ===
=== Exit-Status ===
{| class="wikitable options col1center big"
|-
! Wert !! Beschreibung
|-
| 0 || Erfolg
|-
| >0 || Fehler
|}


; Hinweis
== Anwendung ==
:* sshfs unterstützt Hardlinks nur ab OpenSSH-Server-Version 5.7 oder neuer.
; Einhängen eines entfernten Verzeichnisses
:* Bei älteren OpenSSH-Versionen ist es daher nicht möglich, sshfs für eine Datensicherung zu nutzen.
<syntaxhighlight lang="bash" highlight="1-2" line>
:* Die OpenSSH-Version kann ermittelt werden indem man sich per ssh auf dem Server anmeldet und /usr/sbin/sshd -V eingibt.
mkdir ~/fusessh
sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh
</syntaxhighlight>


=== Optionen ===
Falls ein Passwort für die Verbindung erforderlich ist, erscheint in der Konsole eine Abfrage
sshfs bietet eine Reihe von Optionen, wie z.B. `-p 222`, falls der [:SSH:SSH-Server] auf Port 222 lauschen sollte.\\


==== User Mapping ====
; Aushängen eines entfernten Verzeichnisses
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. Dabei werden die entfernten Rechte auf die im Kommando angegebenen Werte übertragen. Beispiel:
<syntaxhighlight lang="bash" highlight="1" line>
fusermount -u ~/fusessh
</syntaxhighlight>


; Befehl
; Optionen
sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh -o idmap=user -o uid=$(id -u) -o gid=$(id -g)
sshfs bietet eine Reihe von Optionen
* -p 222, falls der SSH-Server auf Port 222 lauschen sollte


Der Befehl würde dem aktuellen Benutzer Eigentümer- und Gruppenrechte geben, gleich wie diese auf dem entfernten System gesetzt sind.
=== User Mapping ===
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


==== Symlinks mit einbeziehen ====
Dabei werden die entfernten Rechte auf die im Kommando angegebenen Werte übertragen
Möchte man im eigenen System auch den [:ln/#Symbolische-Verknuepfungen:Symbolische Verknüpfungen] (auch „Symlinks“ oder „Softlinks“ genannt), die auf dem entfernten Rechner gesetzt sind, folgen können, so gibt es hierfür die Option `follow_symlinks`, die folgendermaßen genutzt werden kann:
<syntaxhighlight lang="bash" highlight="1" line copy>
sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh -o idmap=user -o uid=$(id -u) -o gid=$(id -g)
</syntaxhighlight>


; Befehl
Der Befehl würde dem aktuellen Benutzer Eigentümer- und Gruppenrechte geben, gleich wie diese auf dem entfernten System gesetzt sind
sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh -o follow_symlinks


Eine genaue Übersicht der Parameter kann man in der [:man:Manualseite] von sshfs nachlesen. Weitere Details finden sich ebenfalls unter [:Benutzer_und_Gruppen:], so wie [:Rechte:] hier im Wiki.
=== follow_symlinks ===
[[Symbolische Verknüpfungen]] auf entfernten Rechnern folgen
* Symlinks
* Softlinks


=== Automount ===
<syntaxhighlight lang="bash" highlight="1">
Falls man das Dateisystem automatisch beim Systemstart oder bei der Anmeldung einbinden lassen will, muss man die [:SSH#Authentifizierung-ueber-Public-Keys:SSH-Authentifizierung] über Public-Keys einrichten. Man ist nun nicht mehr gezwungen, das Server-Passwort einzutippen. Wichtig für das Einbinden ("mount") während des Systemstarts ist, dass sich die privaten Schlüssel ("private keys") im Root-Verzeichnis '''/root/.ssh/''' befinden oder explizit über den Parameter '''-o IdentityFile=/Pfad/zum/publickkey/Schlüsseldateiname''' angegeben werden.
sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh -o follow_symlinks
</syntaxhighlight>


==== Beim Systemstart ====
== Konfiguration ==
=== Dateien ===
{| class="wikitable options big"
|-
! Datei !! Beschreibung
|-
| ||
|-
| ||
|}


===== über die /etc/fstab =====
<noinclude>
In der Datei '''/etc/fstab''' muss mit Root-Rechten [7] 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.
== Anhang ==
 
=== Dateien ===
===== per Dispatcher =====
/usr/bin/sshfs
Man legt mit Root-Rechten [7] in einem Editor [4] eine Datei im Ordner '''/etc/NetworkManager/dispatcher.d/''' an. Der Dateiname sollte mit einer Zahl beginnen, die die Startreihenfolge festlegt, wie beispielsweise '''02sshfs'''. Nach der Erstellung des Skriptes muss dieses ausführbar gemacht werden[8].
 
/usr/sbin/mount.fuse.sshfs
Ein Beispielskript sieht z.B. so aus:
  /usr/sbin/mount.sshfs
  #!/bin/bash
IFACE=$1    #wird vom NetworkManager übergeben
BEFEHL=$2  #wird vom NetworkManager übergeben
   
   
  #SSHFS-Einstellungen
  /usr/share/bug/sshfs
PORT=22 #ssh-Port des Zielsystems
  /usr/share/bug/sshfs/presubj
PFAD="/Pfad/Zielordner" # ABSOLUTE PFADANGABE im lokalen System
  KEY="/home/user/.mykeys/my_rsakey" #eigener privater Schlüssel
   
   
  case "$BEFEHL" in
  /usr/share/doc/sshfs/AUTHORS
  up)
/usr/share/doc/sshfs/README.Debian
    #SSHFS-Verbindung herstellen
/usr/share/doc/sshfs/README.rst
    #ACHTUNG: die Optionen sind Beispiele und haben keinen Anspruch auf allgemeine Gültigkeit!
/usr/share/doc/sshfs/changelog.Debian.amd64.gz
    /usr/bin/sshfs -p$PORT user@server:relativer_pfad_auf_dem_server/ $PFAD -o uid=1000,gid=1000,nomap=ignore,allow_other,IdentityFile=$KEY
/usr/share/doc/sshfs/changelog.Debian.gz
    ;;
/usr/share/doc/sshfs/changelog.gz
  down)
/usr/share/doc/sshfs/copyright
    /bin/fusermount -u $PFAD
/usr/share/man
    ;;
/usr/share/man/man1
  *)
/usr/share/man/man1/sshfs.1.gz
    echo $"usage: $0 {up|down}"
    exit 1
esac


Weiterführende Informationen zu Dispatcher-Skripten gibt es unter [:NetworkManager/Dispatcher:].
=== Siehe auch ===
 
<div style="column-count:2">
; Hinweis
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree>
: Es besteht die Möglichkeit, ein sshfs-mount ebenfalls über die [:interfaces#Start-Stop-Skripte:/etc/network/interfaces] einzubinden, bei Verwendung des [:NetworkManager: Network Managers] (NM) sollte von einer Bearbeitung der '''/etc/network/interfaces''' aber abgesehen werden!
</div>
 
----
==== Nach der Anmeldung eines Anwenders ====
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
Den sshfs-Befehl
 
; 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 ===
 
; Warnung
: Es kann vorkommen, dass sich die Verbindung mit sshfs nach einer Weile aufhängt und nicht mehr reagiert, obwohl das Einbinden geklappt hatte und man auch auf die Dateien und Ordner auf dem anderen Rechner zugreifen konnte.
 
Laut [http://sourceforge.net/p/fuse/wiki/SshfsFaq/#sshfs-hangs-after-a-while FUSEWiki] {en} gibt es dafür zwei Lösungsansätze:
 
1) In der Datei '''.ssh/config''' folgende Zeile hinzufügen (liegt im Homeverzeichnis des Anwenders, 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 neu angelegt.
 
2) Oder man fügt beim oben stehenden sshfs-Befehl die Option `-o ServerAliveInterval=15` ein. Dieser Lösungsansatz wurde zwar nicht laut [http://sourceforge.net/p/fuse/wiki/SshfsFaq/#sshfs-hangs-after-a-while FUSEWiki] {en} getestet, aber sollte theoretisch auch funktionieren.
 
; Befehl
sshfs -o ServerAliveInterval=15 Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh


Diese sollte die ssh-Verbindung aufrechterhalten, auch wenn über einen längeren Zeitraum keine Aktivitäten stattfinden.
=== Dokumentation ===
; Man-Page
# [https://manpages.debian.org/trixie/sshfs/sshfs.1.en.html sshfs(1)]
<!--
; Info-Pages
-->


=== Fehlerbehebung ===
=== Links ===
==== Projekt ====
# https://github.com/libfuse/sshfs


== Syntax ==
==== Weblinks ====
=== Optionen ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===
== Konfiguration ==
=== Dateien ===
== Sicherheit ==
== Dokumentation ==
=== RFC ===
=== Man-Pages ===
=== Info-Pages ===
== Siehe auch ==
== Links ==
=== Projekt-Homepage ===
=== Weblinks ===
# https://wiki.ubuntuusers.de/FUSE/sshfs/
# https://wiki.ubuntuusers.de/FUSE/sshfs/
# https://wiki.archlinux.org/index.php/SSHFS
# https://wiki.archlinux.org/index.php/SSHFS


=== Einzelnachweise ===
{{DEFAULTSORT:sshfs}}
<references />
{{DISPLAYTITLE:sshfs}}
== Testfragen ==
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>


[[Kategorie:Entwurf]]
[[Kategorie:SSH/Befehl]]
[[Kategorie:FUSE]]


[[Kategorie:SSH]]
</noinclude>
[[Kategorie:FUSE]]
{{DEFAULTSORT:sshfs}}

Aktuelle Version vom 1. Oktober 2025, 21:54 Uhr

sshfs - FUSE-Modul zur Einbindung entfernter Verzeichnisse in das lokale Dateisystem

Beschreibung

Entfernte Dateien und Verzeichnisse wie lokale bearbeiten

Anforderungen

sshfs benutzt FUSE (Filesystem in USErspace)

  • Dateisystemclient, der auf dem SSH-Dateiübertragungsprotokoll basiert

Da die meisten SSH-Server dieses Protokoll unterstützen, ist er sehr einfach einzurichten

  • Serverseite ist nichts zu tun
  • Clientseitig ist das Einhängen des Dateisystems so einfach wie das Einloggen am Server mittels ssh

Installation

sudo apt install sshfs
Vor dem Ausführen von sshfs
  • FUSE muss eingerichtet sein
  • Verzeichnis erstellen, in welches das entfernte Verzeichnis eingehangen werden soll
  • Benutzer muss Mitglied der Gruppe fuse sein

Aufruf

Optionen

Unix GNU Parameter Beschreibung

Parameter

Umgebungsvariablen

Exit-Status

Wert Beschreibung
0 Erfolg
>0 Fehler

Anwendung

Einhängen eines entfernten Verzeichnisses
mkdir ~/fusessh
sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh

Falls ein Passwort für die Verbindung erforderlich ist, erscheint in der Konsole eine Abfrage

Aushängen eines entfernten Verzeichnisses
fusermount -u ~/fusessh
Optionen

sshfs bietet eine Reihe von Optionen

  • -p 222, falls der SSH-Server auf Port 222 lauschen sollte

User Mapping

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

Dabei werden die entfernten Rechte auf die im Kommando angegebenen Werte übertragen

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

Der Befehl würde dem aktuellen Benutzer Eigentümer- und Gruppenrechte geben, gleich wie diese auf dem entfernten System gesetzt sind

follow_symlinks

Symbolische Verknüpfungen auf entfernten Rechnern folgen

  • Symlinks
  • Softlinks
sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh -o follow_symlinks

Konfiguration

Dateien

Datei Beschreibung


Anhang

Dateien

/usr/bin/sshfs

/usr/sbin/mount.fuse.sshfs
/usr/sbin/mount.sshfs

/usr/share/bug/sshfs
/usr/share/bug/sshfs/presubj

/usr/share/doc/sshfs/AUTHORS
/usr/share/doc/sshfs/README.Debian
/usr/share/doc/sshfs/README.rst
/usr/share/doc/sshfs/changelog.Debian.amd64.gz
/usr/share/doc/sshfs/changelog.Debian.gz
/usr/share/doc/sshfs/changelog.gz
/usr/share/doc/sshfs/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/sshfs.1.gz

Siehe auch


Dokumentation

Man-Page
  1. sshfs(1)

Links

Projekt

  1. https://github.com/libfuse/sshfs

Weblinks

  1. https://wiki.ubuntuusers.de/FUSE/sshfs/
  2. https://wiki.archlinux.org/index.php/SSHFS