Um es klar zu sagen:Ich suche eine Lösung, die ich nach dem Einloggen einmal starte, und dann möchte ich dieses Terminal benutzen, weggehen, zwei Stunden später wiederkommen und weiterarbeiten, ohne etwas vor dem Weggehen zu tippen.
Das Problem ist, dass irgendetwas (normalerweise eine Firewall oder ein Load-Balancer) Leerlaufsitzungen abbricht. Wenn Sie Sitzungs-Keepalives konfigurieren, verhindern die Keepalives, dass Netzwerkgeräte die Sitzung als inaktiv betrachten.
Linux / Unix / Cygwin OpenSSH-Fix :
Die einfachste Lösung besteht darin, ssh-Client-Keepalives zu aktivieren. Dieses Beispiel sendet alle 60 Sekunden ein ssh-Keepalive:
ssh -o "ServerAliveInterval 60" <SERVER_ADDRESS>
Wenn Sie dies für alle Ihre Sitzungen aktivieren möchten, fügen Sie dies in Ihren /etc/ssh/ssh_config
ein oder ~/.ssh/config
:
ServerAliveInterval 60
Weitere Informationen finden Sie unter ssh_config
Manpage
Putty Fix :
Speichern Sie dies in Ihren PuTTY-"Standardeinstellungen"...
- Klicken Sie auf Verbindung
- Geben Sie 60 in "Sekunden zwischen Keepalives" ein
Zusätzlich zu Mike Penningtons Antwort möchte ich Sie auf ServerAliveCountMax
aufmerksam machen auch.
- Die
ServerAliveInterval
sendet alle x Sekunden ein Keepalive (Standard ist 0 , wodurch diese Funktion deaktiviert wird, wenn sie nicht auf etwas anderes eingestellt ist). - Dies wird erledigt
ServerAliveCountMax
Mal, wenn keine Antwort kommt. Der Standardwert vonServerAliveCountMax
ist 3 (siehe Manpage ssh_config).
Beispiel:Wenn Sie ServerAliveInterval
einstellen bis 60 und verlassen Sie ServerAliveCountMax
So wie es ist, bedeutet dies, dass das Keepalive nur auf 3 * 60 = 180 seconds =
wartet 3 Minuten vor dem Beenden.
Um dies z.B. 2 Stunden lang versuchen, die Verbindung aufrechtzuerhalten, können Sie Folgendes tun:
Per Befehl:
Daher sollten Sie erwägen,
zu setzenssh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 120" <SERVER_ADDRESS>
Beständig:
Um es dauerhaft zu machen, schreiben Sie es in /etc/ssh/ssh_config
(gilt systemweit) oder ~/.ssh/config
(gilt nur für Benutzer):
ServerAliveInterval 60
ServerAliveCountMax 120
Hinweis
Wie dislick richtig betont hat, ist dies je nach Situation möglicherweise nicht das, was Sie möchten:
- Wer die Sitzung schnell beenden möchte, sobald der Server nicht mehr antwortet, sollte einen niedrigen Wert für
ServerAliveCountMax
wählen . - Wer eher daran interessiert ist, eine bereits aufgebaute Verbindung aufrechtzuerhalten (z.B. Sie fahren mit dem Zug und haben eine hohe Latenz), sollte einen höheren Wert für
ServerAliveCountMax
wählen umssh
zuzulassen um weiterhin zu versuchen, die Verbindung wiederherzustellen.
Siehe auch:
- unix.stackexchange.com – Was ist das standardmäßige Leerlaufzeitlimit für OpenSSH?
Ich verwende Mobaxterm und bin auch auf dieses Problem gestoßen. Mobaxterm wird auch mit einer Option geliefert, um den Client am Leben zu erhalten, wenn der Client inaktiv ist. Gehen Sie zu Settings -> Configuration -> SSH
. Es gibt einen Abschnitt mit dem Titel SSH settings
, aktivieren Sie die Option SSH keepalive
. Dann sollte das Problem verschwinden.