SSH mit automatischer Screen session
Wer viel auf dem Terminal unterwegs ist, sollte in jedem Fall GNU/Screen verwenden. Damit lassen sich innerhalb eines Terminals (und damit auch SSH-Verbindung!) mehrere shells starten, zwischen denen gewechselt werden kann. Die ganze Sitzung, also alle im screen gestarteten shells, können auch in den Hintergrund geschickt werden, wo sie weiterlaufen. So kann man etwa zwischen einer Login-Konsole und einem grafischen Terminal wechseln oder, viel häufiger, die Sitzung weiterlaufen lassen (inklusive aller gestarteten Programme!), wenn man die Verbindung zu einem entfernten Rechner trennt oder diese abbricht. Später kann man sich diese Sitzung dann einfach wieder zurückholen.
Um das ganze bequem zu automatisieren, kann man sich in die Konfigurationsdatei der Bash ein paar Zeilen einfügen, die beim Verbinden über SSH automatisch screen starten. Sollte bereits eine Sitzung bestehen, wird diese fortgesetzt.
Dazu muss man folgenden Ausschnitt an das Ende der Datei ~/.bashrc
einfügen:
if [ ! "$TERM" == "screen" ] && [ "$SSH_TTY" != '' ]; then
screen -x -S sshscreen || screen -S sshscreen
fi
Kurze Erklärung
- teste, ob Screen schon läuft (Die Variable
$TERM
wäre dann"screen"
) - teste außerdem, ob man über SSH verbunden ist ($SSH_TTY hätte dann einen Wert gesetzt)
- wenn das beides zutrifft, versuche zur Screen-Sitzung mit namen “sshscreen” zu verbinden
- wenn das nicht klappt, starte eine Screen-Sitzung mit Namen “sshscreen”