Verwenden -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
Die Kombination führt dazu, ServerAliveInterval=15,ServerAliveCountMax=3
dass die E / A-Fehler nach einer Minute Netzwerkausfall angezeigt werden. Dies ist wichtig, aber weitgehend undokumentiert. Wenn die ServerAliveInterval
Option standardmäßig aktiviert ist (also ohne die Aktivitätsprüfung), scheinen Prozesse, bei denen E / A-Hänge auftreten, unbegrenzt zu ruhen, selbst nachdem der sshfs-Befehl ausgeführt wurde reconnect
. Ich halte das für ein nutzloses Verhalten.
Mit anderen Worten, was -o reconnect
ohne Zuweisung geschieht , ServerAliveInterval
ist, dass jede E / A erfolgreich ist oder die Anwendung auf unbestimmte Zeit hängt, wenn die SSH-Verbindung wiederhergestellt wird. Eine typische Anwendung hängt sich dadurch vollständig auf. Wenn Sie zulassen möchten, dass E / A einen Fehler zurückgibt und die Anwendung fortsetzt, benötigen Sie ServerAliveInterval=1
oder höher.
Die ServerAliveCountMax=3
ist sowieso die Standardeinstellung, aber ich möchte sie aus Gründen der Lesbarkeit angeben.
man 5 ssh_config
für weitere Details, aber das Wesentliche ist, dass ssh alle 15 Sekunden so etwas wie einen "Keep-Alive" -Ping alle 15 Sekunden sendet, um sicherzustellen, dass die Computer immer noch aufeinander reagieren. Wenn drei aufeinanderfolgende Pings fehlschlagen (45 Sekunden), stellen Sie die Verbindung wieder her.ServerAliveCountMax=3
hat eine andere bedeutung. Wenn ein Fehler auftritt, wird versucht, die Verbindung noch dreimal wiederherzustellen, und es wird aufgegeben. Irgendwann ist ein erneuter Versuch sinnlos, aber das hängt von der Anwendung ab. Andererseits denke ich, dass die Manpage spezifischer sein könnte. Es gibt verschiedene Möglichkeiten, die IMO-Formulierung zu interpretieren. FWIW mein spezifisches Problem verschwand nach dem Wechsel zu ProtonVPN. Ich denke, es lohnt sich auch, die SSH-Konfiguration auf dem Client und dem Server zu überprüfen. Sie haben separate Optionen. Alles, was Sie wirklich brauchen, ist-o reconnect
Danke für die Tipps von autossh und autofs.
Für meinen direkten Zweck fand ich jedoch eine viel einfachere Lösung, die nicht so gut dokumentiert war:
quelle
Autossh stellt die Verbindung zu SSH- Sitzungen automatisch wieder her, wenn es feststellt, dass SSH abgestorben ist oder keinen Datenverkehr mehr durchläuft. Da es sich nur um automatisiertes SSH handelt, funktioniert es von verschiedenen IP-Adressen und vom Suspend-Modus (auch wenn der Laptop in einem anderen LAN aufwacht).
quelle
Eine Sache, die Sie tun könnten, ist, Ihre Dateisysteme über autofs einzuhängen . Autofs ist ein Tool, das ein Dateisystem bereitstellt, wenn Sie etwas in dem Verzeichnis verwenden, in das das Dateisystem bereitgestellt wird. Wenn Aktivität erkannt wird, wird das Dateisystem bereitgestellt. Wenn auf dem Dateisystem nichts passiert, ist es nicht gemountet.
Hier ist eine Anleitung, die ich auf Google gefunden habe, um dies zu erreichen, wo es mehrere andere gibt.
quelle
Ich vermute, dass dies nicht der Fall ist, denn selbst wenn Sie Ihren SSH-Client so konfigurieren können, dass die Verbindung nicht getrennt wird, wird der Server möglicherweise nach einer bestimmten Zeit der Inaktivität so konfiguriert, dass Sie dies nicht überschreiben können. Selbst wenn Sie dies könnten, würde der Server hängen bleiben, wenn Sie die Verbindung nie wieder herstellen, und dies könnte im Laufe der Zeit zu einer erheblichen Verschwendung von Serverressourcen führen.
Ich denke, eine bessere Technik ist es, das Dateisystem zu deaktivieren, bevor Sie Ihren Computer anhalten, und es erneut anzuhängen, wenn der Computer wieder aufwacht. Der Mechanismus dafür hängt möglicherweise genau davon ab, wie Sie Ihren Computer anhalten. Ich verwende den tuxonice-Kernel und habe dafür eine Direktive wie
in
/etc/hibernate/common.conf
.quelle
Die Antwort von Kubanczyk ist großartig. Ich hatte ein Problem mit dem Einfrieren der gesamten Benutzeroberfläche, weil sshfs zu gierig ist. Jetzt wird die Verbindung für eine einfache Verbindung durch ein Skript hergestellt, das beim Öffnen des Laptops wieder hergestellt wird und nicht einfriert, wenn die Verbindung langsamer wird Nicht sehr sicher, aber praktisch für viele Webprojekte, zum Beispiel:
quelle