SSH-Prozess auf Remotecomputer nicht beendet, wenn das Remote-System die Verbindung unerwartet trennt

8

Ich habe eine Frage, auf die ich keine Antwort finden konnte. Ich habe zwei Computer, auf denen Ubuntu 12.04 ausgeführt wird. Ich behalte einen meiner Computer zu Hause und verwende SSH, um vom anderen ("entfernten") Computer aus eine Verbindung zu ihm herzustellen. Der Remotecomputer kann problemlos eine Verbindung zum Heimcomputer herstellen. Auf dem Remotecomputer ist SetAliveInterval in / etc / ssh / ssh_config auf 60 festgelegt, sodass die Verbindung nicht unterbrochen wird, wenn ich mich für einen Moment vom Computer entferne.

Gelegentlich wird meine Internetverbindung auf meinem Remotecomputer unterbrochen. Internetunterbrechungen führen dazu, dass mein SSH-Tunnel (natürlich) geschlossen wird. Wenn ich die Internetverbindung wiederherstelle und über einen neuen SSH-Tunnel erneut eine Verbindung zum Heimcomputer herstelle, kann ich jedoch feststellen, #ps axdass der alte SSH-Verbindungsprozess noch ausgeführt wird. Dies ist ein Problem, da ich auf dem Heimcomputer ein verschlüsseltes Home-Verzeichnis verwende, mit dem die Dateien erst wieder verschlüsselt werden können, wenn diese (jetzt tote) SSH-Verbindung unterbrochen wurde.

Gibt es eine Möglichkeit, sshd_config auf dem Heimcomputer so einzustellen, dass er automatisch erkennt, wenn eine Verbindung unterbrochen wurde, und diese beendet?

J L
quelle

Antworten:

5

Versuchen Sie es mit screen oder tmux . Auf der Serverseite oder auf beiden Seiten, wenn Sie möchten:

sudo apt-get install tmux

Starten Sie nach dem Anmelden tmux .

tmux

Wenn die Verbindung unterbrochen wird , melden Sie sich erneut über ssh an und verbinden Sie die tmux- Sitzung erneut. So ermitteln Sie die Sitzungsnummer:

tmux ls

Die Ausgabe könnte ungefähr so ​​aussehen:

0: 1 Fenster (erstellt am 25. Dezember 19:20:40 2012)

Stellen Sie wie folgt eine Verbindung zur tmux- nummerierten Sitzung her:

tmux attach -t 0

Dann bist du wieder da, wo du es verlassen hast. Sie müssen die Sitzungen nicht beenden. Sie warten nur auf Ihren nächsten Besuch. Oder wenn Sie nur die Sitzung beenden möchten ...

Auf der Serverseite finden Sie die /etc/ssh/sshd_configEinstellungen für ClientAliveInterval und ClientAliveCountMax . ( man 5 ssh_config)

ClientAliveInterval 300
ClientAliveCountMax 0

Starten Sie den SSH-Server neu, sobald sie nach Ihren Wünschen geändert wurden.

sudo /etc/init.d/ssh restart

Der 300 ist Sekunden (fünf Minuten).


quelle
Genau das habe ich gesucht! Ich werde mit ClientAliveInterval beginnen und auf jeden Fall auch tmux ausprobieren. Vielen Dank!
JL
1
Eine dritte Option neben Screen und Tmux ist Byobu : Website , Wikipedia . Von der Website: "Es wurde ursprünglich entwickelt, um den ansonsten funktionalen, einfachen und praktischen GNU-Bildschirm für die Ubuntu-Serververteilung elegant zu verbessern. Byobu enthält jetzt erweiterte Profile, praktische Tastenkombinationen, Konfigurationsdienstprogramme und umschaltbare Systemstatusbenachrichtigungen sowohl für den GNU Screen Window Manager als auch für den moderneren Tmux Terminal Terminal Multiplexer und funktioniert auf den meisten Linux-, BSD- und Mac-Distributionen. "
Sierra Detandil
1

Sie können moshInstallieren Sie mosh ausprobieren , einen Ersatz für SSH, der auf SSH aufbaut. Es unterstützt Roaming und intermittierende Konnektivität, sodass Ihre Mosh-Sitzung (SSH) nur dort fortgesetzt wird, wo Sie aufgehört haben, wenn Ihre Internetverbindung nach einer Unterbrechung wieder hergestellt wird.

Sie müssen Mosh auf beiden Computern installieren.

Verweise:

Flimm
quelle