Ich habe eine SSH-Verbindung eingerichtet, um ein Programm auf einem Remote-Server auszuführen. Das Programm druckt alle 10 Sekunden Debuginformationen auf dem Terminal aus. Wird die SSH-Verbindung inaktiv, wenn ich die SSH-Fenster längere Zeit (sagen wir 10 Stunden) geöffnet lasse? Wie wird Aktivität in einer SSH-Sitzung definiert? Soll ich alle x Sekunden einen Befehl eingeben/ausführen, um die Sitzung aufrechtzuerhalten?
Antwort1
Sie müssen nichts Besonderes tun, SSH beendet eine Verbindung nicht wegen Inaktivität. Es ist also keine Inaktivitätsperiode definiertinnerhalbSSH.
Allerdings kann eines der Geräte auf der Netzwerkroute zwischen Ihnen und Ihrem Server die Route verlieren, und dafür reicht normalerweise eine Aktivität von einer Seite aus, aber nicht immer (bei Verwendung von TCP gibt es „Ankunftsbestätigungspakete“, Bestätigungen, die vom Client an den Server zurückgehen).
Verkehr von beiden Seiten ist keine Garantie für eine kontinuierliche Konnektivität. Wenn Sie ein DSL-Modem haben und Ihr Anbieter entscheidet, dass Sie jeden Tag eine neue IP-Adresse erhalten, wird die Verbindung unterbrochen.
Sie können Ihren Client regelmäßig Pakete senden lassen, indem Sie
ServerAliveInterval 5
oder /etc/ssh/ssh_config
Sie ~/.ssh/config
haben alle 5 Sekunden zusätzlich zu dem Datenverkehr, der alle 10 Sekunden vom Server kommt, etwas Datenverkehr vom Client zum Server.
Die einfachere "Lösung" für das Zurücksetzen einer Verbindung über das DSL-Modem ist die Ausführung der serverseitigen Software intmux
oderscreen
: Wenn die Verbindung unterbrochen wird, melden Sie sich einfach erneut per SSH beim Server an, geben Sie tmux attach
oder ein screen -r
und Sie können das Serverprogramm ohne Unterbrechung weiter anzeigen.
Die Verwendung von tmux
/ screen
ist besonders nützlich, wenn Sie sich nicht so sehr um den Verlust der Verbindung sorgen, sondern um die Konsequenz, dass das Serverprogramm in diesem Fall anhält. Dazu können Sie auch die Ausgabe des ursprünglichen Programms in eine Datei umleiten und verwenden tail -f
, aber das ermöglicht Ihnen keine einfache Interaktion mit dem Serverprogramm (falls dies erforderlich wäre). tmux
und screen
(in ihren Grundformen) sind einfach zu verwenden, haben aber einige Nebenwirkungen, z. B. dass Sie mit den Schiebereglern auf Ihrem grafischen Terminal nicht zurückscrollen können (Sie müssen Tastaturkürzel verwenden, damit der Server in seinem Puffer zurückscrollt).
Eine flexiblere Lösung für Geräte, die Ihre Verbindung unterbrechen, ist die Verwendungmosh
. Dabei wird SSH zum Austausch geheimer Informationen verwendet und anschließend eine erneute Verbindung ermöglicht, selbst wenn sich eine oder beide IP-Adressen ändern. Dies ist jedoch schwieriger einzurichten und zum Laufen zu bringen.
In Ihrem Fall würde ich mit der Verwendung beginnen tmux
und die Verbindung manuell wiederherstellen, wenn sie tatsächlich deaktiviert wird.
Antwort2
außerdem ist es sehr hilfreich, den SCREEN-Befehl zu verwenden. Damit können Sie jeden Befehl ausführen und müssen sich keine Sorgen um Ihre SSH-Verbindung machen.