Was macht der ServerAliveCountMax in SSH eigentlich?
Ich versuche sicherzustellen, dass beim Herstellen einer Verbindung zu meinem Server über SSH die Verbindung für einen langen Zeitraum geöffnet bleibt, anstatt dass die Verbindung nach einer kurzen Zeit der Inaktivität unterbrochen wird. Dies ist das Beispiel
Host *
ServerAliveInterval 60
ServerAliveCountMax 2
Ich habe von einer Quelle gehört, dass die obige Einstellung immer alle 60 Sekunden eine Antwort an den Server sendet, solange der Server diese Antwort empfängt. Wenn die Antwort jedoch aus irgendeinem Grund nicht an den Server gesendet wird, wird versucht, eine weitere Nachricht zu senden. Wenn diese Nachricht ebenfalls fehlschlägt, wird die Verbindung getrennt. (Ich denke das ist falsch)
Die zweite und dritte Quelle sagen jedoch etwas anderes. Sie behaupten, dass alle 60 Sekunden eine Nachricht an den Server gesendet wird, wenn eine Zeit der Inaktivität vorliegt, aber nur zwei Anfragen gesendet werden und dann die Verbindung getrennt wird.
Was genau macht ServerAliveCountMax?
Interval
das0
Deaktivieren eingestellt. Aber es ist nicht klar , ob Sie setzenMax
auf0
. Würde es unendliche lebendige Pings senden oder keine?Server-Alive-Nachrichten sind nützlich, wenn ein SSH-Server so konfiguriert wurde, dass Verbindungen nach einer bestimmten Zeit ohne Datenverkehr getrennt werden (beispielsweise bei gemeinsam genutzten Webhosting-Anbietern, die SSH-Zugriff anbieten, geschieht dies fast immer). Wenn Sie diese beiden Optionen einstellen
ServerAliveInterval
, wird maximal alle Sekunden ein Paket gesendet ,ServerAliveCountMax
wodurch die Sitzung am Leben bleibt.Um auf die Kommentare zu der Ungewissheit zu antworten, dass eine der Optionen auf gesetzt ist
0
, habe ich den Quellcode deropenssh
Implementierung durchgelesen und hier ist, was ich sehe ...Durch die Einstellung
ServerAliveInterval
auf0
werden die Pakete NICHT gesendet, die Sitzung bleibt jedoch auf unbestimmte Zeit aktiv, vorausgesetzt, die Verbindung wird nicht aufgrund eines TCP-Timeouts getrennt und der Server ist nicht für das Löschen inaktiver Clients konfiguriert.Die Einstellung
ServerAliveCountMax
auf0
hat den gleichen Effekt wie die EinstellungServerAliveInterval
auf0
.Wenn Sie entweder einen negativen Wert oder einen höheren Wert als
INT_MAX
(dh 2.147.483.647) festlegen, wird der Fehler "Ganzzahlwert ..." ausgegeben.Eine Einstellung
ServerAliveCountMax
zwischenINT_MAX/1000+1
(dh 2.147.484) undINT_MAX
(dh 2.147.483.647) wäre auch gleichbedeutend mit der Einstellung eines der beiden Werte auf0
.Die meisten Timeouts, die Sie erhalten können (während Sie die Pakete noch senden), sind
INT_MAX/1000
also (dh 2.147.483). Mit einem Timeout von1
und überhaupt keinem Verkehr auf den Sitzungen würden Sie fast 25 Tage bekommen.Offensichtlich können andere Implementierungen von SSH andere Ergebnisse haben.
quelle