Kann ich eine Verbindung zu verlassenen SSH-Sitzungen herstellen oder diese anzeigen?

14

Ich habe eine virtuelle Instanz von RedHat ausgeführt, die ich sshvon jedem Host im Unternehmensnetzwerk aus erreichen kann. Meine sshSitzung wurde abgebrochen, während einige Skripts ausgeführt wurden, die möglicherweise dazu geführt haben, dass ich die Verbindung getrennt habe. Der whoBefehl listet lokal weiterhin die unterbrochene Verbindung auf. Durch ssherneutes Verbinden mit wird eine neue Sitzung gestartet. Gibt es eine Möglichkeit, eine Verbindung zur ursprünglichen Sitzung herzustellen? Wenn nicht, kann ich es töten? Ich habe Root- und physischen Zugriff. Ich habe den Bildschirm in der ursprünglichen Sitzung nicht verwendet.

jms
quelle

Antworten:

11

Sie möchten den Bildschirm auf der Fernbedienung verwenden und dann, wenn Sie zurückkehren, erneut eine Verbindung zu dieser Bildschirminstanz herstellen.

aber nein, man kann sich nicht wieder mit einer ssh-sitzung verbinden, man muss screen benutzen (oder etwas ähnliches, um das zu erleichtern).

Schauen Sie sich diese Frage für mindestens eine andere Option und einige Unterschiede zwischen ihr (tmux) und dem Bildschirm an. Nachdem ich die Antwort auf diese Frage gelesen habe, würde ich sagen, dass tmux besser ist

oh und ja, Sie könnten killden Prozess (einschließlich der Bash-Verzweigung) beenden, Sie könnten versuchen skill, den Benutzer mit Namen zu töten, aber ich vermute, wenn dieser Benutzer root ist ... es könnte versuchen, Dinge zu töten, die er nicht kann.

Die Antwort wurde einige Male aktualisiert

Xenoterracid
quelle
4

Standardmäßig können Sie keine Verbindung zu einer abgebrochenen ssh-Sitzung herstellen. Sie können jedoch Prozesse innerhalb einer SSH-Sitzung einrichten, mit denen Sie sich nach dem Wiederherstellen einer neuen SSH-Sitzung erneut verbinden können.

Was Sie verwenden möchten, ist screen oder noch besser ein benutzerfreundlicher Wrapper um screen namens byobu.

Auf dem Bildschirm können Sie mehrere virtuelle Terminalsitzungen in derselben SSH-Sitzung ausführen. Ein Tutorial und Hilfeseiten stehen zur Verfügung.

byobu ist ein Wrapper, der es ermöglicht, neue Bildschirme mit einer einfachen Funktionstaste anstelle einer Tastenkombination von Strg-A zu öffnen. Außerdem wird eine Statuszeile mit allen offenen virtuellen Terminals angezeigt, die benannt werden können.

Ein weiteres nettes Feature ist die Tatsache, dass Ihr gesamter Bildschirm eingeschaltet bleiben kann, während Ihre SSH-Verbindung getrennt ist. Du verbindest dich einfach wieder per ssh und rufst byobu an und alles ist wie vorher.

Endlich ein paar Screenshots von byobu.

txwikinger
quelle
3

Wie bereits erwähnt, ist der Bildschirm wahrscheinlich die beste Wahl. Wenn Ihre Sitzung beendet wird, läuft sie weiter. Geben Sie 'screen -list' ein, um die verfügbaren Sitzungen anzuzeigen, und 'screen -r' mit der gewünschten Sitzung. Ein kleiner Tipp: Sie können die Sitzungszeichenfolge durch Tabulatoren vervollständigen, anstatt das Ganze zu kopieren oder einzufügen.

Bildschirm kann jedoch ärgerlich sein. In meinem Client können Sie nicht einfach nach oben scrollen, um den Verlauf in der Konsole anzuzeigen. Es verhält sich etwas anders als erwartet. Wenn Sie nur sicherstellen möchten, dass Ihre lang laufenden Procs nicht getötet werden, verwenden Sie 'nohup'. Es verhindert, dass dein Proc heruntergefahren wird, wenn du die Verbindung verlierst. Stellen Sie jedoch sicher, dass Sie Ihre Proc-Ausgabe an eine Datei senden, wenn Sie sie überwachen möchten. Wenn Sie ein Bash-Skript haben, sollten Sie explizit 'bash' vor nohup aufrufen. Ein Beispiel...

nohup bash ./myscript.sh> output.log 2> & 1 &

Das heißt, nohup, um das Beenden des Prozesses zu verhindern, bash, um bash explizit aufzurufen, wenn Sie bash-spezifische Dinge in Ihrem Skript haben, Ihr Skript heißt 'myscript.sh' im aktuellen Verzeichnis, output.log als die Datei, um sowohl std out als auch zu senden Fehler raus, und das '&' am Ende, um das proc im Hintergrund auszuführen.

kāgii
quelle