Ich habe eine SSH-Verbindung zu einem Computer, der nach 30 Minuten ohne Benutzereingabe von diesem Computer getrennt wird. Wenn ich jedoch so etwas anfange top
, bleibt die Verbindung bestehen. Da dies ein Client-Computer ist, kann ich den SSH-Server dieses Computers nicht neu konfigurieren. Also suche ich nach einer Möglichkeit, Müßiggang automatisch zu erkennen und so etwas zu starten top
. Eine Art "Bildschirmschoner" für Bash.
Ich weiß, dass ich das mit machen kann screen
, aber leider screen
nicht installiert ist, 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?
Antworten:
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-Fix :
Der einfachste Fix ist die Aktivierung der SSH-Client-Keepalives. In diesem Beispiel wird alle 60 Sekunden ein ssh-Keepalive gesendet:
Wenn Sie dies für alle Ihre Sitzungen aktivieren möchten, geben Sie dies in Ihr
/etc/ssh/ssh_config
oder ein~/.ssh/config
:Weitere Informationen finden Sie in der
ssh_config
ManpagePutty Fix :
Speichern Sie dies in Ihren PuTTY "Standardeinstellungen" ...
quelle
Neben der Antwort von Mike Pennigton möchte ich Sie auch darauf aufmerksam machen
ServerAliveCountMax
.ServerAliveInterval
sendet alle x Sekunden ein Keepalive (Standard ist 0 , wodurch diese Funktion deaktiviert wird, wenn nichts anderes festgelegt ist).ServerAliveCountMax
mal gemacht, wenn keine Antwort eingeht. Der StandardwertServerAliveCountMax
ist 3 (siehe Manpage ssh_config ).Beispiel: Wenn Sie
ServerAliveInterval
auf 60 setzen und so lassen,ServerAliveCountMax
wie es ist, bedeutet dies, dass das Keepalive nur3 * 60 = 180 seconds =
3 Minuten wartet, bevor es beendet wird.Um dies auf z. B. 2 Stunden zu erhöhen, in denen versucht wird, die Verbindung aufrechtzuerhalten, können Sie Folgendes tun:
Per Befehl:
Daher sollte man sich überlegen einzustellen
Hartnäckig:
Um es dauerhaft zu machen, schreiben Sie es an
/etc/ssh/ssh_config
(gilt systemweit) oder~/.ssh/config
(gilt nur für Benutzer):Hinweis
Wie dislick richtig hervorhob, ist dies je nach Ihrer Situation möglicherweise nicht das, was Sie wollen:
ServerAliveCountMax
.ServerAliveCountMax
erlaubenssh
zu halten versuchen , die Verbindung wiederherzustellen.Siehe auch:
quelle
ServerAliveCountMax
Gibt die Anzahl der Server-Alive-Nachrichten an, die gesendet werden können, ohne dass Nachrichten vom Server zurückgegeben werden. Wenn Sie das Programm beenden möchtenssh
, nachdem es eingefroren ist (damit Sie es neu starten können), sollten SieServerAliveCountMax
eine niedrige Zahl festlegen . Siehe die Manpage OP verlinkt.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 TitelSSH settings
, aktivieren Sie die OptionSSH keepalive
. Dann sollte das Problem verschwinden.quelle