Lösung 1:
Versuchen Sie, ClientAliveInterval (z. B. 60) und TCPKeepAlive (yes oder no) in der serverseitigen sshd.conf auf geeignete Werte zu setzen.
Dies sollte Ihre Sitzung am Leben erhalten, selbst wenn die Verbindung minutenlang unterbrochen wird.
Lösung 2:
UPDATE:Eine aktuelle Antwort finden Sie unten in der Antwort von zero_r
Dies ist keine Antwort, sondern ein Workaround. Bildschirm verwenden.
Wenn Sie sich zum ersten Mal anmelden, führen Sie screen. Sie erhalten eine andere Shell, führen Befehle darin aus. Wenn Sie getrennt sind, hält der Bildschirmprozess das Terminal am Leben, sodass Ihre Shell und die darauf laufenden Prozesse nicht umfallen. Wenn Sie die Verbindung wieder herstellen, führen Sie 'screen -r' aus, um fortzufahren.
Es gibt noch eine Menge mehr zum Konfigurieren und Verwenden des Bildschirms, aber das obige sollte Ihr Problem umgehen.
Lösung 3:
Wie oben erwähnt, ist GNU Screen der richtige Weg. Es ermöglicht Ihnen, eine "Bildschirmsitzung" auf der Remote-Box zu haben, in der Sie mehrere Befehle über mehrere "Bildschirmfenster" ausführen können. Dies wird einfach getrennt, wenn Ihre übergeordnete SSH-Verbindung unterbrochen wird, wodurch alle darin laufenden Unterprozesse am Leben erhalten werden.
'man screen
' ist wie üblich Ihr Freund, und das OS-Paket sollte 'screen
heißen ' wenn es nicht standardmäßig installiert ist.
Grundlagen sind:
-
Starten Sie eine Bildschirmsitzung (auf Ihrem Remote-Host):
$ screen
-
Trennen Sie Ihre Bildschirmsitzung:CTRL-A , d
-
Verbinden Sie sich erneut mit Ihrer Bildschirmsitzung, nachdem Sie sich erneut angemeldet haben:
$ screen -d -r
-
Öffnen Sie ein weiteres Bildschirmfenster:CTRL-A , c
-
Wechseln Sie durch Ihre geöffneten Bildschirmfenster:CTRL-A , Leerzeichen
Es gibt viele von coolen Dingen, die Sie mit Screen machen können. Ich benutze es seit über 10 Jahren und entdecke immer noch neue Funktionen. Es ist mein bevorzugtes Unix-Dienstprogramm.
Lösung 4:
Ich kann nicht glauben, dass niemand MOSH erwähnt hat;
Mosh ist ein separates Protokoll, das sich in den SSH-Anmeldeprozess einklinken kann, es hält Ihre Sitzung nach Tagen der Trennung, Änderung der IP, hoher Latenz usw. am Leben. Es ist auf der Homepage besser erklärt, als ich es erklären kann, also habe ich die Beschreibung unten kopiert. Meine Erfahrungen und Ratschläge sind, dass ich es auf meinem Android-Handy verwende, es ist ein Lebensretter auf Reisen und beim SSH-Verkehr. Das Gleiche gilt beispielsweise für meinen Laptop, wenn er mit dem Handy im Zug verbunden ist. Ich empfehle, aus den Quellen zu kompilieren, um die neueste Version zu erhalten, die Repo-Version für mich in Ubuntu hat ein paar Ärgernisse, die in der neuesten Version (zum Zeitpunkt des Schreibens) behoben wurden.
Mosh (mobile Shell)
Remote-Terminal-Anwendung, die Roaming ermöglicht, intermittierende Konnektivität unterstützt und intelligente lokale Echo- und Leitungsbearbeitung von Benutzertastenanschlägen bereitstellt.
Mosh ist ein Ersatz für SSH. Es ist robuster und reaktionsschneller, insbesondere über WLAN, Mobilfunk und Fernverbindungen.
Mosh ist freie Software, verfügbar für GNU/Linux, FreeBSD, Solaris, MacOS X und Android.
Features von der Website:
-
IP ändern. Bleiben Sie in Verbindung :Mosh roamt automatisch, wenn Sie zwischen Internetverbindungen wechseln. Nutzen Sie Wi-Fi im Zug, Ethernet im Hotel und LTE am Strand:Sie bleiben eingeloggt. Die meisten Netzwerkprogramme verlieren nach dem Roaming ihre Verbindung, einschließlich SSH und Webapps wie Gmail. Mosh ist anders.
-
Sorgt für süße Träume :Mit Mosh können Sie Ihren Laptop in den Ruhezustand versetzen und ihn später aufwecken, wobei Ihre Verbindung intakt bleibt. Wenn Ihre Internetverbindung unterbrochen wird, warnt Mosh Sie – aber die Verbindung wird wiederhergestellt, wenn der Netzwerkdienst wieder verfügbar ist.
-
Werden Sie Netzwerkverzögerungen los :SSH wartet auf die Antwort des Servers, bevor es Ihnen Ihre eigene Eingabe zeigt. Das kann zu einer lausigen Benutzeroberfläche führen. Mosh ist anders:Es reagiert sofort auf das Tippen, Löschen und Bearbeiten von Zeilen. Es tut dies adaptiv und funktioniert sogar in Vollbildprogrammen wie emacs und vim. Bei einer schlechten Verbindung werden ausstehende Vorhersagen unterstrichen, damit Sie nicht in die Irre geführt werden.
-
Kein privilegierter Code. Kein Daemon :Sie müssen kein Superuser sein, um Mosh zu installieren oder auszuführen. Client und Server sind ausführbare Dateien, die von einem normalen Benutzer ausgeführt werden und nur für die Lebensdauer der Verbindung bestehen.
-
Gleiche Anmeldemethode :Mosh hört nicht auf Netzwerkports oder authentifiziert Benutzer. Der Mosh-Client meldet sich über SSH beim Server an, und Benutzer präsentieren die gleichen Anmeldeinformationen (z. B. Passwort, öffentlicher Schlüssel) wie zuvor. Dann führt Mosh den Mosh-Server aus der Ferne aus und verbindet sich über UDP damit.
-
Läuft in Ihrem Terminal, aber besser :Mosh ist ein Kommandozeilenprogramm, wie ssh. Sie können es innerhalb von xterm, gnome-terminal, urxvt, Terminal.app, iTerm, emacs, screen oder tmux verwenden. Aber Mosh wurde von Grund auf neu entwickelt und unterstützt nur einen Zeichensatz:UTF-8. Es behebt Unicode-Fehler in anderen Terminals und in SSH.
-
Control-C funktioniert hervorragend :Im Gegensatz zu SSH handhabt das UDP-basierte Protokoll von Mosh Paketverluste elegant und legt die Framerate basierend auf den Netzwerkbedingungen fest. Mosh füllt keine Netzwerkpuffer, also Strg-C
funktioniert immer, um einen außer Kontrolle geratenen Prozess zu stoppen.
Lösung 5:
autossh überwacht Ihre Verbindung und stellt die Verbindung wieder her, wenn sie ausfällt. Es ist zuverlässiger als Keepalives. Wenn Sie sich mit einer Bildschirmsitzung verbinden, fahren Sie direkt dort fort, wo Sie die Verbindung getrennt haben (siehe rscreen
das kommt mit autossh)