|
|
| (95 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| '''topic''' kurze Beschreibung | | '''sshfs''' - [[FUSE]]-Modul zur Einbindung entfernter Verzeichnisse in das lokale Dateisystem |
| | |
| == Beschreibung == | | == Beschreibung == |
| == Installation ==
| | Entfernte Dateien und Verzeichnisse wie lokale bearbeiten |
| == Anwendungen ==
| | === Anforderungen === |
| === Fehlerbehebung ===
| | * [[sftp]]-Server |
| == Syntax ==
| |
| === Optionen ===
| |
| === Parameter ===
| |
| === Umgebungsvariablen ===
| |
| === Exit-Status ===
| |
| == Konfiguration ==
| |
| === Dateien ===
| |
| == Sicherheit ==
| |
| == Dokumentation ==
| |
| === RFC ===
| |
| === Man-Pages ===
| |
| === Info-Pages ===
| |
| == Siehe auch ==
| |
| == Links ==
| |
| === Projekt-Homepage ===
| |
| === Weblinks ===
| |
| === Einzelnachweise === | |
| <references />
| |
| == 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]] | | [[sshfs]] benutzt [[FUSE]] (Filesystem in USErspace) |
| | * Dateisystemclient, der auf dem SSH-Dateiübertragungsprotokoll basiert |
|
| |
|
| = TMP =
| | 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 |
|
| |
|
| [https://github.com/libfuse/sshfs 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 spezielle Programm-Pakete notwendig.
| | == Installation == |
| | <syntaxhighlight lang="bash" highlight="1" copy> |
| | sudo apt install sshfs |
| | </syntaxhighlight> |
|
| |
|
| {{{#!vorlage Hinweis
| | ; Vor dem Ausführen von sshfs |
| 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]. {en}
| | * [[FUSE]] muss eingerichtet sein |
| }}}
| | * [[Verzeichnis]] erstellen, in welches das entfernte Verzeichnis eingehangen werden soll |
| | * Benutzer muss Mitglied der [[Gruppe]] '''fuse''' sein |
|
| |
|
| == Installation == | | == Aufruf == |
| Folgendes Paket muss installiert [1] werden:
| | <syntaxhighlight lang="bash" highlight="1" line copy> |
| | </syntaxhighlight> |
|
| |
|
| {{{#!vorlage Paketinstallation | | === Optionen === |
| sshfs, universe [2]
| | {| class="wikitable sortable options gnu big" |
| }}}
| | |- |
| | ! Unix !! GNU !! Parameter !! Beschreibung |
| | |- |
| | | || || || |
| | |- |
| | |} |
|
| |
|
| == Benutzung == | | === Parameter === |
| 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.
| | === Umgebungsvariablen === |
| | === Exit-Status === |
| | {| class="wikitable options col1center big" |
| | |- |
| | ! Wert !! Beschreibung |
| | |- |
| | | 0 || Erfolg |
| | |- |
| | | >0 || Fehler |
| | |} |
|
| |
|
| Das Einhängen erfolgt im Terminal [3] über folgenden Befehl, vorher sollte aber noch ein Ordner namens '''fusessh''' erstellt werden:
| | == Anwendung == |
| | | ; Einhängen eines entfernten Verzeichnisses |
| {{{#!vorlage Befehl
| | <syntaxhighlight lang="bash" highlight="1-2" line> |
| mkdir ~/fusessh | | mkdir ~/fusessh |
| }}}
| |
|
| |
| {{{#!vorlage Befehl
| |
| sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh | | sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh |
| }}}
| | </syntaxhighlight> |
|
| |
|
| Falls ein Passwort für die Verbindung erforderlich ist, erscheint in der Konsole eine Abfrage. Das Aushängen erfolgt analog zu den anderen FUSE-Modulen mit: | | Falls ein Passwort für die Verbindung erforderlich ist, erscheint in der Konsole eine Abfrage |
|
| |
|
| {{{#!vorlage Befehl
| | ; Aushängen eines entfernten Verzeichnisses |
| | <syntaxhighlight lang="bash" highlight="1" line> |
| fusermount -u ~/fusessh | | fusermount -u ~/fusessh |
| }}}
| | </syntaxhighlight> |
|
| |
|
| {{{#!vorlage Hinweis
| | ; Optionen |
| sshfs unterstützt Hardlinks nur ab OpenSSH-Server-Version 5.7 oder neuer. Bei älteren OpenSSH-Versionen ist es daher nicht möglich, sshfs für eine Datensicherung zu nutzen. Die OpenSSH-Version kann ermittelt werden indem man sich per ssh auf dem Server anmeldet und /usr/sbin/sshd -V eingibt. | | sshfs bietet eine Reihe von Optionen |
| }}}
| | * -p 222, falls der SSH-Server auf Port 222 lauschen sollte |
|
| |
|
| === Optionen === | | === User Mapping === |
| sshfs bietet eine Reihe von Optionen, wie z.B. `-p 222`, falls der [:SSH: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 |
|
| |
|
| ==== User Mapping ==== | | Dabei werden die entfernten Rechte auf die im Kommando angegebenen Werte übertragen |
| 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 copy> |
| | sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh -o idmap=user -o uid=$(id -u) -o gid=$(id -g) |
| | </syntaxhighlight> |
|
| |
|
| {{{#!vorlage 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 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 |
|
| |
|
| ==== Symlinks mit einbeziehen ==== | | <syntaxhighlight lang="bash" highlight="1"> |
| 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:
| |
| {{{#!vorlage Befehl
| |
| sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh -o follow_symlinks | | sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh -o follow_symlinks |
| }}}
| | </syntaxhighlight> |
|
| |
|
| 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.
| | == Konfiguration == |
| | === Dateien === |
| | {| class="wikitable options big" |
| | |- |
| | ! Datei !! Beschreibung |
| | |- |
| | | || |
| | |- |
| | | || |
| | |} |
|
| |
|
| === Automount ===
| | <noinclude> |
| 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.
| |
|
| |
|
| ==== Beim Systemstart ==== | | == 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 |
|
| |
|
| ===== über die /etc/fstab ===== | | === Siehe auch === |
| In der Datei '''/etc/fstab''' muss mit Root-Rechten [7] in einem Editor [4] eine Zeile hinzugefügt werden:
| | <div style="column-count:2"> |
| | | <categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree> |
| {{{ | | </div> |
| sshfs#Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh fuse uid=1003,gid=100,umask=0,allow_other,_netdev 0 0
| | ---- |
| }}}
| | {{Special:PrefixIndex/{{BASEPAGENAME}}/}} |
|
| |
|
| Der Parameter `_netdev` ist wichtig, da das System sonst beim Booten nicht weiß, dass eine funktionierende Netzwerkverbindung zum Einbinden der Partition erforderlich ist.
| | === Dokumentation === |
| | ; Man-Page |
| | # [https://manpages.debian.org/trixie/sshfs/sshfs.1.en.html sshfs(1)] |
| | <!-- |
| | ; Info-Pages |
| | --> |
|
| |
|
| ===== per Dispatcher ===== | | === Links === |
| 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].
| | ==== Projekt ==== |
| | # https://github.com/libfuse/sshfs |
|
| |
|
| Ein Beispielskript sieht z.B. so aus:
| | ==== Weblinks ==== |
| {{{#!code bash
| |
| #!/bin/bash
| |
| IFACE=$1 #wird vom NetworkManager übergeben
| |
| BEFEHL=$2 #wird vom NetworkManager übergeben
| |
| | |
| #SSHFS-Einstellungen
| |
| PORT=22 #ssh-Port des Zielsystems
| |
| PFAD="/Pfad/Zielordner" # ABSOLUTE PFADANGABE im lokalen System
| |
| KEY="/home/user/.mykeys/my_rsakey" #eigener privater Schlüssel
| |
| | |
| case "$BEFEHL" in
| |
| up)
| |
| #SSHFS-Verbindung herstellen
| |
| #ACHTUNG: die Optionen sind Beispiele und haben keinen Anspruch auf allgemeine Gültigkeit!
| |
| /usr/bin/sshfs -p$PORT user@server:relativer_pfad_auf_dem_server/ $PFAD -o uid=1000,gid=1000,nomap=ignore,allow_other,IdentityFile=$KEY
| |
| ;;
| |
| down)
| |
| /bin/fusermount -u $PFAD
| |
| ;;
| |
| *)
| |
| echo $"usage: $0 {up|down}"
| |
| exit 1
| |
| esac
| |
| | |
| }}}
| |
| | |
| Weiterführende Informationen zu Dispatcher-Skripten gibt es unter [:NetworkManager/Dispatcher:].
| |
| | |
| {{{#!vorlage Hinweis
| |
| 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!
| |
| }}}
| |
| | |
| ==== Nach der Anmeldung eines Anwenders ====
| |
| Den sshfs-Befehl
| |
| | |
| {{{#!vorlage 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 ===
| |
| | |
| {{{#!vorlage 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.
| |
| | |
| {{{#!vorlage 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.
| |
| | |
| == Links ==
| |
| * [http://heise.de/-1646679 HowTo bei heise open] {de}
| |
| * [http://ubuntu.wordpress.com/2005/10/28/how-to-mount-a-remote-ssh-filesystem-using-sshfs/ Anleitung für sshfs] {en}
| |
| * [http://doc.ubuntu-fr.org/sshfs Anleitungen im französischen Wiki] {fr}
| |
| | |
| ==Quellen==
| |
| # 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 |
|
| |
|
| | {{DEFAULTSORT:sshfs}} |
| | {{DISPLAYTITLE:sshfs}} |
| | |
| | [[Kategorie:SSH/Befehl]] |
| [[Kategorie:FUSE]] | | [[Kategorie:FUSE]] |
| | |
| | </noinclude> |
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
- 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
- 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
sshfs Benutzername@irgendEinRechner:/pfad_auf_dem_server/ ~/fusessh -o follow_symlinks
Konfiguration
Dateien
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
- sshfs(1)
Links
Projekt
- https://github.com/libfuse/sshfs
Weblinks
- https://wiki.ubuntuusers.de/FUSE/sshfs/
- https://wiki.archlinux.org/index.php/SSHFS