Der Linux-SSH-Server trennt die SSH-Sitzung standardmäßig nie von der Serverseite. Überprüfen Sie die Switch-/Router-/Firewall-Konfiguration, um das Problem zu vermeiden, ohne die Konfiguration der SSH-Server/Clients zu ändern. Wenn die SSH-Sitzung aufgrund von Inaktivität getrennt wird und Sie dies beenden möchten, befolgen Sie bitte die folgenden Schritte, entweder auf Client- oder Serverseite, wie unten beschrieben:
Clientseitige Einstellungen
Um Keep Alive systemweit zu aktivieren (Root-Zugriff erforderlich), bearbeiten Sie die Konfigurationsdatei /etc/ssh/ssh_config . Um die Einstellungen nur für einen bestimmten Benutzer festzulegen, bearbeiten Sie auf ähnliche Weise ~/.ssh/config (erstellen Sie die Datei, falls sie nicht existiert). Folgendes einfügen:
Host * ServerAliveInterval 300 ServerAliveCountMax 2
Diese Einstellungen veranlassen den SSH-Client oder -Server, alle 300 Sekunden (5 Minuten) ein Nullpaket an die andere Seite zu senden und aufzugeben, wenn er nach 2 Versuchen keine Antwort erhält, an welchem Punkt die Verbindung wahrscheinlich bestanden hat trotzdem verworfen.
Von der Manpage ssh_config:
ServerAliveCountMax:
Setzt die Anzahl der Server-Alive-Meldungen (siehe unten), die gesendet werden können, ohne dass ssh(1) irgendwelche Meldungen vom Server zurückerhält. Wenn dieser Schwellenwert erreicht wird, während Server-Alive-Meldungen gesendet werden, trennt ssh die Verbindung zum Server und beendet die Sitzung. Es ist wichtig zu beachten, dass sich die Verwendung von Server-Alive-Nachrichten stark von TCPKeepAlive (unten) unterscheidet. Die Server-Alive-Nachrichten werden über den verschlüsselten Kanal gesendet und sind daher nicht fälschbar. Die von TCPKeepAlive aktivierte TCP-Keepalive-Option ist spoofbar. Der Server-Alive-Mechanismus ist wertvoll, wenn Client oder Server darauf angewiesen sind, zu wissen, wann eine Verbindung inaktiv geworden ist.
Der Standardwert ist 3. Wenn beispielsweise ServerAliveInterval (siehe unten) auf 15 gesetzt ist und ServerAliveCountMax auf dem Standardwert belassen wird und der Server nicht mehr reagiert, wird ssh nach etwa 45 Sekunden getrennt. Diese Option gilt nur für Protokollversion 2; In Protokollversion 1 gibt es keinen Mechanismus, um eine Antwort vom Server auf die Server-Alive-Meldungen anzufordern, daher liegt die Trennung in der Verantwortung des TCP-Stacks.
ServerAliveInterval:
Legt ein Timeout-Intervall in Sekunden fest, nach dem, wenn keine Daten vom Server empfangen wurden, ssh(1) eine Nachricht über den verschlüsselten Kanal sendet, um eine Antwort vom Server anzufordern. Der Standardwert ist 0, was bedeutet, dass diese Nachrichten nicht an den Server gesendet werden, oder 300, wenn die Option „BatchMode“ festgelegt ist. Diese Option gilt nur für Protokollversion 2. ProtocolKeepAlives und SetupTimeOut sind Debian-spezifische Kompatibilitätsaliase für diese Option.
Serverseitige Einstellung
Wenn Sie Administratorzugriff auf den Server haben, können Sie die Optionen ClientAliveInterval, TCPKeepAlive und ClientAliveCountMax in der SSHd-Konfigurationsdatei konfigurieren. Der Pfad der Datei ist /etc/ssh/sshd_config
# vi /etc/ssh/sshd_config ClientAliveInterval 30 TCPKeepAlive yes ClientAliveCountMax 99999
Sie müssen den SSH-Server neu starten, damit die Änderungen wirksam werden.
# service sshd restart