ServerAliveInterval : Anzahl der Sekunden, die der Client wartet, bevor ein Nullpaket an den Server gesendet wird (um die Verbindung aufrechtzuerhalten).
ClientAliveInterval : Anzahl der Sekunden, die der Server wartet, bevor ein Nullpaket an den Client gesendet wird (um die Verbindung aufrechtzuerhalten).
Wenn Sie den Wert 0 (Standardeinstellung) festlegen, werden diese Funktionen deaktiviert, sodass Ihre Verbindung unterbrochen werden kann, wenn sie zu lange inaktiv ist.
ServerAliveInterval scheint die gängigste Strategie zu sein, um eine Verbindung am Leben zu erhalten. Um das Problem der unterbrochenen Leitung zu vermeiden, verwende ich in meiner .ssh / config-Datei die folgende ssh-Konfiguration:
Host myhostshortcut
HostName myhost.com
User barthelemy
ServerAliveInterval 60
ServerAliveCountMax 10
Die obige Einstellung funktioniert folgendermaßen:
- Der Client wartet 60 Sekunden im Leerlauf (ServerAliveInterval-Zeit) und sendet ein "No-Op-Null-Paket" an den Server und erwartet eine Antwort. Wenn keine Antwort eingeht, wird der obige Vorgang bis zu 10 (ServerAliveCountMax) Mal (600 Sekunden) wiederholt. Wenn der Server immer noch nicht antwortet, trennt der Client die SSH-Verbindung.
ClientAliveCountMax auf der Serverseite kann ebenfalls hilfreich sein. Dies ist die Grenze dafür, wie lange ein Client nicht mehr reagiert, bevor die Verbindung getrennt wird. Der Standardwert ist 3, wie in drei ClientAliveInterval.
Dies wird in
sshd_config
manual (man sshd_config
) erklärt:Informationen zu den Client-Optionen finden Sie in der Erläuterung unter
man ssh_config
:Basierend auf dem obigen Wert bedeutet 0, dass es deaktiviert ist. Daher sollten Sie diese Werte hoch genug einstellen, um einen Rohrbruchfehler zu vermeiden .
quelle
ServerAliveInterval
in meine Konfigurationsdatei eingefügt habe.Die Antwort von Barthelemy ist cool, aber sie geht dem Problem nicht wirklich auf den Grund. Sie unterbrechen Ihren Computer und möchten, dass die SSH-Sitzung noch aktiv ist, wenn Sie Ihren Computer starten.
Es gibt keine solche Konfiguration für ssh, die die Verbindung so am Leben erhält. SSH verwendet TCP. Zunächst benötigen Sie den Drei-Wege-Handshake, um nach einer gewissen Leerlaufzeit am Leben zu bleiben. Beim Herunterfahren / Ruhezustand werden alle Ihre TCP-Verbindungen mit FIN geschlossen. Keine Möglichkeit, das zu überwinden.
Für eine fehlerhafte Problemumgehung können Sie VPS oder eine andere Online-Box mit Bildschirm verwenden, um die Verbindung aufrechtzuerhalten. Mein Rat tut das aus Sicherheitsgründen nicht.
quelle
Da Sie nicht garantieren können, dass eine SSH-Verbindung (TCP) am Leben bleibt, wenn kein Ende mehr ACKs an empfangene Pakete sendet, benutze ich persönlich http://www.harding.motd.ca/autossh/ , um alle meine SSH-Verbindungen neu zu starten fast sobald ich nicht mehr suspendiere.
Da der GNU-Bildschirm auf der Serverseite verwendet wird, kann ich durch erneutes Anhängen dorthin gelangen, wo ich vorher war.
Sie können es zusätzliche Ports abhören lassen, so dass es ständig prüft, ob die Verbindungen noch bestehen, aber ich persönlich finde, dass es mit diesen deaktivierten Ports gut genug funktioniert und sich nur auf SSHs eigenes
ServerAliveInterval
/ verlässtServerAliveCountMax
.Eine weitere Option ist http://mosh.mit.edu/, die UDP verwendet und sich nahtlos von einem langfristigen Mangel an Konnektivität erholt.
quelle
Sie können Befehle auch mit ausführen,
nohup
wenn Sie möchten, dass sie unabhängig von Ihrer SSH-Verbindung ausgeführt werden.z.B
$ nohup tar -xzf some_huge.tar.gz &
Das
&
ist, denke ich, nicht notwendig, aber es ist praktisch, da es den Prozess im Hintergrund laufen lässt, so dass Sie andere Dinge tun können.Ich benutze immer nohup für jeden Prozess, der eine Weile dauert, damit ich nicht von vorne anfangen muss, wenn ich die Verbindung aus irgendeinem Grund verliere - Stromausfall (an meinem entfernten Standort, nicht offensichtlich am Host), Netzwerkausfall, was auch immer.
quelle
zsh
Benutzer solltendisown -h
stattdessen bleibennohup
, es sei denn, das Problem wurde seitdem behoben.Platzieren Sie Ihre lange laufende Sitzung auf dem Bildschirm. Siehe Bildschirm -h für Details
Auf diese Weise können Sie mit ssh die Verbindung zum Computer wiederherstellen und erneut eine Verbindung zur Bildschirmsitzung herstellen
quelle