it-swarm.com.de

So verhindern Sie, dass SSH die Verbindung trennt, wenn es eine Weile nicht benutzt wurde

Ich habe eine SSH-Verbindung zu einem Computer, der nach 30 Minuten ohne Benutzereingabe von diesem Computer getrennt wird. Wenn ich jedoch etwas wie top starte, bleibt die Verbindung bestehen. Da dies der Computer eines Clients ist, kann ich den SSH-Server dieses Computers nicht neu konfigurieren. Ich suche also nach einer Möglichkeit, Müßiggang automatisch zu erkennen und so etwas wie top zu starten. Eine Art "Bildschirmschoner" für Bash.

Ich weiß, dass ich das mit screen machen kann, aber leider ist screen nicht installiert und ich kann keine Software installieren. Also muss ich das nutzen, was Bash anbietet.

Um es klar zu machen: Ich suche nach einer Lösung, die ich einmal nach dem Anmelden beginne, und möchte dann dieses Terminal verwenden, weggehen, zwei Stunden später zurückkehren und weiterarbeiten, ohne etwas einzugeben, bevor ich weggehe. Außerdem schaue ich nicht nach Tunnelmaterial (dafür empfehle ich das großartige Tool sshuttle )

Irgendwelche Ideen?

45
Isaac

Um es klar zu machen: Ich suche nach einer Lösung, die ich einmal nach dem Anmelden beginne, und möchte dann dieses Terminal verwenden, weggehen, zwei Stunden später zurückkehren und weiterarbeiten, ohne etwas einzugeben, bevor ich weggehe.

Das Problem ist, dass es etwas gibt (normalerweise eine Firewall oder ein Load-Balancer), das inaktive Sitzungen löscht. Wenn Sie Sitzungs-Keepalives konfigurieren, verhindern die Keepalives, dass Netzwerkgeräte die Sitzung als inaktiv betrachten.

Linux/Unix/Cygwin OpenSSH Update :
Die einfachste Lösung besteht darin, ssh-Client-Keepalives zu aktivieren. In diesem Beispiel wird alle 60 Sekunden ein SSH-Keepalive gesendet:

ssh -o "ServerAliveInterval 60" <SERVER_ADDRESS>

Wenn Sie dies für alle Ihre Sitzungen aktivieren möchten, geben Sie dies in Ihren /etc/ssh/ssh_config oder ~/.ssh/config ein:

ServerAliveInterval 60

Weitere Informationen finden Sie in der Manpage ssh_config

PuTTY Fix :

Speichern Sie dies in Ihren PuTTY "Standardeinstellungen" ...

  • Klicken Sie auf Verbindung
  • Typ 60 in "Sekunden zwischen Keepalives"

PuTTY_screenshot

72
Mike Pennington

Zusätzlich zu Mike Pennigtons Antwort möchte ich Sie auch auf ServerAliveCountMax aufmerksam machen.

  • Der ServerAliveInterval sendet alle x Sekunden ein Keepalive (Standard ist 0 , wodurch diese Funktion deaktiviert wird, wenn nichts anderes festgelegt ist).
  • ABER dies wird nur ServerAliveCountMax mal gemacht. Der Standardwert von ServerAliveCountMax ist 3 (siehe Manpage ssh_config ).

Beispiel: Wenn Sie ServerAliveInterval auf 60 setzen und ServerAliveCountMax unverändert lassen, bedeutet dies, dass die Verbindung nur für 3 * 60 = 180 seconds = 3 Protokoll.

Um dies auf z.B. 2 Stunden, um die Verbindung aufrechtzuerhalten, können Sie Folgendes tun:

Per Befehl:

Daher sollte man sich überlegen einzustellen

ssh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 120" <SERVER_ADDRESS>

Persistent:

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

Siehe auch:

17
Murmel

Ich benutze Mobaxterm und bin auch auf dieses Problem gestoßen. Mobaxterm wird auch mit einer Option ausgeliefert, die den Client am Leben hält, wenn der Client inaktiv ist. Gehe zu Settings -> Configuration -> SSH. Es gibt einen Abschnitt mit dem Titel SSH settings, aktivieren Sie die Option SSH keepalive. Dann sollte das Problem verschwinden.

enter image description here

1
jdhao