Um die Verbindung am Leben zu erhalten , können Sie in /etc/ssh/ssh_configder Zeile, in der steht ServerAliveInterval, überprüfen , wie oft (in Sekunden) Ihr Computer ein Null-Paket senden wird, um die Verbindung am Leben zu erhalten. Wenn Sie dort eine 0 haben, die angibt, dass Ihr Computer nicht versucht, die Verbindung aufrechtzuerhalten (sie ist deaktiviert), wird Ihnen ansonsten mitgeteilt, wie oft (in Sekunden) das oben genannte Paket gesendet wird. Versuchen Sie, 120 oder 240 einzugeben. Wenn die Verbindung immer noch unterbrochen wird, können Sie den Wert auf 5 senken. Wenn dies nicht der Fall ist, wird die Verbindung möglicherweise von Ihrem Router in den freien Speicher verschoben.
Um es zu beenden, wenn es auflegt , können Sie das Escape-Zeichen ssh verwenden:
~.
Drücken Sie also die Tilde und dann den Punkt. Wenn dies nicht funktioniert, drücken Sie die Eingabetaste, bevor Sie darauf drücken. Dadurch wird die Verbindung sofort getrennt.
Ok, du kannst die Verbindung abbrechen mit ~., toller Tipp! Aber was macht es eigentlich?
CousinCocaine
Das einzige, worüber ich verwirrt war, war, ob ich sshd neu starten musste oder nicht, aber es scheint, als ob nur das Verlassen der Sitzung und das erneute
Verbinden
Oft ist die ~. arbeitet für mich seit einigen Minuten nicht Warum ist das so?
Sridhar Sarnobat
2
Der Speicherort von ssh_configist /etc/ssh/ssh_configunter Mac OS X. Ich würde die Antwort selbst bearbeiten, aber ich habe nicht genug Repräsentanten auf dieser Website, um dies zu tun.
Erik B
soll ich das in client oder server stellen? Ich denke Client, kann aber klarer sein.
EralpB
23
Du kannst:
Konfigurieren Sie Ihr System systemweit für alle Verbindungen. Bearbeiten Sie dazu: / etc / ssh / ssh_config,
und fügen Sie die folgende Zeile hinzu:
ServerAliveInterval10
Oder pro Server ~ / .ssh / config
Host keepsdroppingme.com
ServerAliveInterval10
Was das im Grunde bedeutet, dass es alle 10 Sekunden ein Keep-Alive-Paket sendet ...
Sie können auch versuchen, das fantastische mosh-Projekt zu verwenden . Es behandelt Netzwerkverluste, Computer, die in den Energiesparmodus wechseln usw. ordnungsgemäß und stellt die Verbindung problemlos wieder her, wenn Sie wieder über ein funktionierendes Netzwerk verfügen.
Eine andere altehrwürdige Lösung ist die Verwendung von tmux auf dem Remote-Computer. In diesem Fall kann es immer noch zu einem Rohrbruch kommen, aber wenn Sie die Shell erneut verbinden, warten die Anwendungen genau so, wie Sie sie verlassen haben.
Die verschiedenen Antworten hier stehen in Konflikt bezüglich des genauen Pfads zu den Konfigurationsdateien. Vielleicht ist es in verschiedenen Unixen anders? Ich schlage vor, die Manpages auf Ihrem System zu lesen!
Suchen Sie in man ssh (1) nach text: config . Auf meinem System habe ich die Wahl zwischen systemweiten oder benutzerspezifischen Konfigurationsdateien (und die Pfade sind seltsamerweise unterschiedlich).
Suchen Sie in man ssh_config (5) nach text: alive . Auf meinem System muss anscheinend sowohl ServerAliveInterval als auch ServerAliveCountMax festgelegt werden .
Was für mich unter macOS 10.12 Sierra funktioniert hat, ist, die folgenden zwei Zeilen in ~ / .ssh / config einzufügen:
ServerAliveInterval20ServerAliveCountMax180
Jetzt kann ich ohne Unterbrechung für 20 * 180 Sekunden = 1 Stunde auf meinen Ubuntu 16.04-Server sshen. Meinen Tag gerettet!
Dieses Problem wurde gerade behoben. Fügen Sie die folgenden Zeilen hinzu $HOME/.ssh/config.
Host*ServerAliveInterval120TCPKeepAlive no
Die Einstellung TCPKeepAlive nosagt dem Client, dass er nur davon ausgehen soll, dass die Verbindung noch in Ordnung ist, bis eine Benutzeranforderung das Gegenteil bestätigt. Dies bedeutet, dass vorübergehende Verbindungsunterbrechungen, während Ihre SSH-Laufzeit im Hintergrund inaktiv ist, die Verbindung nicht beenden.
~.
, toller Tipp! Aber was macht es eigentlich?ssh_config
ist/etc/ssh/ssh_config
unter Mac OS X. Ich würde die Antwort selbst bearbeiten, aber ich habe nicht genug Repräsentanten auf dieser Website, um dies zu tun.Du kannst:
Konfigurieren Sie Ihr System systemweit für alle Verbindungen. Bearbeiten Sie dazu: / etc / ssh / ssh_config, und fügen Sie die folgende Zeile hinzu:
Oder pro Server ~ / .ssh / config
Was das im Grunde bedeutet, dass es alle 10 Sekunden ein Keep-Alive-Paket sendet ...
quelle
Sie können auch versuchen, das fantastische mosh-Projekt zu verwenden . Es behandelt Netzwerkverluste, Computer, die in den Energiesparmodus wechseln usw. ordnungsgemäß und stellt die Verbindung problemlos wieder her, wenn Sie wieder über ein funktionierendes Netzwerk verfügen.
Eine andere altehrwürdige Lösung ist die Verwendung von tmux auf dem Remote-Computer. In diesem Fall kann es immer noch zu einem Rohrbruch kommen, aber wenn Sie die Shell erneut verbinden, warten die Anwendungen genau so, wie Sie sie verlassen haben.
quelle
Die verschiedenen Antworten hier stehen in Konflikt bezüglich des genauen Pfads zu den Konfigurationsdateien. Vielleicht ist es in verschiedenen Unixen anders? Ich schlage vor, die Manpages auf Ihrem System zu lesen!
Suchen Sie in man ssh (1) nach text: config . Auf meinem System habe ich die Wahl zwischen systemweiten oder benutzerspezifischen Konfigurationsdateien (und die Pfade sind seltsamerweise unterschiedlich).
Suchen Sie in man ssh_config (5) nach text: alive . Auf meinem System muss anscheinend sowohl ServerAliveInterval als auch ServerAliveCountMax festgelegt werden .
Was für mich unter macOS 10.12 Sierra funktioniert hat, ist, die folgenden zwei Zeilen in ~ / .ssh / config einzufügen:
Jetzt kann ich ohne Unterbrechung für 20 * 180 Sekunden = 1 Stunde auf meinen Ubuntu 16.04-Server sshen. Meinen Tag gerettet!
quelle
Ssh nach schlaf oder wifi unterbrechung automatisch wieder verbinden
Installieren Sie autossh von MacPorts oder Homebrew:
brew install autossh
Öffnen Sie das Terminal und führen Sie es aus
autossh -M 20000 -f [SSH ARGUMENTS GO HERE]
Trennen Sie Ihr WLAN oder schalten Sie Ihren Mac in den Ruhezustand.
Wenn Sie die Verbindung zum WLAN wiederherstellen, wird die SSH-Sitzung automatisch wiederhergestellt.
Automatisch ssh nach dem Login
Jon Stacey hat einen Blogbeitrag über das automatische Aktivieren einer SSH- Sitzung beim Anmelden geschrieben.
Installieren Sie autossh von MacPorts oder Homebrew:
brew install autossh
Erstellen Sie einen Automator-Workflow mit einem Bash-Skript.
quelle
Fügen Sie diese beiden Zeilen hinzu zu
/etc/ssh/ssh_config
:quelle
Dieses Problem wurde gerade behoben. Fügen Sie die folgenden Zeilen hinzu
$HOME/.ssh/config
.Die Einstellung
TCPKeepAlive no
sagt dem Client, dass er nur davon ausgehen soll, dass die Verbindung noch in Ordnung ist, bis eine Benutzeranforderung das Gegenteil bestätigt. Dies bedeutet, dass vorübergehende Verbindungsunterbrechungen, während Ihre SSH-Laufzeit im Hintergrund inaktiv ist, die Verbindung nicht beenden.quelle