GNU/Linux >> LINUX-Kenntnisse >  >> Linux

SSHFS-Mount, der die Trennung überlebt

Lösung 1:

Verwenden Sie -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3

Die Kombination ServerAliveInterval=15,ServerAliveCountMax=3 bewirkt, dass die E/A-Fehler nach einer Minute Netzwerkausfall angezeigt werden. Dies ist wichtig, aber weitgehend undokumentiert. Wenn ServerAliveInterval Option auf Standard belassen wird (also ohne die Alive-Prüfung), scheinen Prozesse, bei denen I/O hängen bleibt, auf unbestimmte Zeit zu schlafen, selbst nachdem sshfs reconnect erhält 'ed. Ich halte dies für ein nutzloses Verhalten.

Mit anderen Worten, was auf -o reconnect passiert ohne ServerAliveInterval zuzuweisen besteht darin, dass alle I/O entweder erfolgreich sind oder die Anwendung auf unbestimmte Zeit aufhängen, wenn der ssh darunter erneut eine Verbindung herstellt. Eine typische Anwendung hängt sich dadurch vollständig auf. Wenn Sie zulassen möchten, dass I/O einen Fehler zurückgibt und die Anwendung fortsetzt, benötigen Sie ServerAliveInterval=1 oder höher.

Die ServerAliveCountMax=3 ist sowieso der Standard, aber ich gebe es gerne für die Lesbarkeit an.

Lösung 2:

Danke für die Tipps zu autossh und autofs.

Für meinen direkten Zweck fand ich jedoch eine viel einfachere Lösung, die nicht so gut dokumentiert war:

sshfs -o reconnect server:/path/to/mount

Lösung 3:

Autossh verbindet ssh-Sitzungen automatisch neu, wenn es feststellt, dass ssh gestorben ist oder den Datenverkehr gestoppt hat. Da es sich nur um automatisiertes SSH handelt, funktioniert es von verschiedenen IPs und vom Suspend (selbst wenn der Laptop in einem anderen LAN aufwacht).

Lösung 4:

Eine Sache, die Sie tun könnten, ist, Ihre Dateisysteme über autofs zu mounten. Autofs ist ein Tool, das ein Dateisystem einhängt, wenn Sie etwas in dem Verzeichnis verwenden, in das das Dateisystem eingehängt wird. Wenn es Aktivität erkennt, wird das Dateisystem gemountet. Wenn auf dem Dateisystem nichts passiert, wird es ausgehängt.

Hier ist eine Anleitung, die ich bei Google gefunden habe, um dies zu erreichen, es gab mehrere andere.

Lösung 5:

Ich vermute, dass dies nicht der Fall ist, denn selbst wenn Sie Ihren SSH-Client so konfigurieren können, dass er die Verbindung nicht trennt, ist der Server möglicherweise so konfiguriert, dass er dies nach einer bestimmten Zeit der Inaktivität tut, und Sie könnten dies nicht außer Kraft setzen. Selbst wenn Sie könnten, würde der Server hängen bleiben, wenn Sie die Verbindung nie wiederherstellen, und im Laufe der Zeit könnte dies zu einer erheblichen Verschwendung von Serverressourcen führen.

Ich denke, eine bessere Technik besteht darin, das Dateisystem zu unmounten, bevor Sie Ihren Computer anhalten, und es erneut zu mounten, wenn der Computer wieder aufwacht. Der Mechanismus dafür kann davon abhängen, wie Sie Ihren Computer genau anhalten - ich verwende den Tuxonice-Kernel und um so etwas zu tun, habe ich eine Direktive wie

Unmount /mnt/sshfs

in /etc/hibernate/common.conf .


Linux
  1. SSHFS (Secure SHell FileSystem) – Remote-Dateisystem sicher über ssh mounten

  2. Verhindern Sie das Schreiben auf einen nicht gemounteten sshfs-Mount-Punkt

  3. SSH - So fügen Sie den Befehl -t in die Datei ~/.ssh/config ein

  4. Wie kann ich feststellen, ob ich über SSH angemeldet bin?

  5. Mounten Sie eine ext4-Partition unter Mac OS X

SSHFS:So mounten Sie Remote-Dateisysteme über SSH

So verwenden Sie SSHFS zum Mounten von Remote-Verzeichnissen über SSH

SSHFS:Mounten eines Remote-Dateisystems über SSH

Mounten Sie einen Remote-Ordner mit sshfs

Ssh – Beschränken eines Ssh/scp/sftp-Benutzers auf ein Verzeichnis?

So verwenden Sie SSHFS-Mount mit Remote-Verzeichnissen über SSH