Konsolentipps | David Wolski | 2-2021 | 29. Januar 2021

Eternal Terminal: Dauerhafte SSH-Verbindung

Das robuste Eternal Terminal lässt sich auch von brüchigen Netzwerkverbindungen nicht abhängen. Das Client-Server-Programm ersetzt SSH und hat seine eigene TCP-Fehlerkorrektur.

Auf instabile Netzwerkverbindungen reagiert SSH empfindlich. Denn das SSH-Protokoll arbeitet ausschließlich mit TCP (Transmission Control Protocol), das an den beiden Enden der SSH-Verbindung eine Schnittstelle zur Datenübertragung öffnet. Bleiben die TCP-Pakete eine Weile aus, dann bricht diese Verbindung ab und die Schnittstellen werden geschlossen. Bei brüchiger Internetkonnektivität leistet das Eternal Terminal als SSH-Ersatz gute Dienste.

Das Eternal Terminal (https://eternalterminal.dev) nutzt ebenfalls TCP, hat aber eine solide Fehlerbehebung bei Verbindungsabbrüchen, die einen sofortigen Neustart der Verbindung zwischen Client und Server erlaubt, ohne dass gesendete Pakete verlorengehen. Dies erfüllt einen ähnlichen Zweck wie das das Client-Server-Programm Mosh (Mobile Shell), die allerdings mit UDP funktioniert und damit nicht überall, durch jede Firewall und Internetverbindung funktioniert. Zudem kann die Mosh kein natives Scrollen im Terminal.

Auch das Eternal Terminal muss auf dem Linux-Client und -Server installiert werden, zusätzlich zum laufenden SSH-Server, der für die initiale Verbindungsaufnahme zuständig ist. 

Für Debian/Ubuntu, Cent-OS und Open Suse gibt es externe Repositorys (https://git.io/JL5Q1), wobei das Ubuntu-PPA sogar im Windows Subsystem für Linux (WSL) funktioniert. In Ubuntu und Co. nehmen die Kommandos

sudo add-apt-repository ppa:jgmath2000/et

sudo apt update

das Repository des Entwickler auf und

sudo apt-get install et

installiert Eternal Terminal jeweils auf dem Client und auf dem Server. Auf dem Server ist es noch notwendig, den Serverprozess mit

sudo systemctl enable et --now

dauerhaft in Gang zu setzen, zusätzlich zum schon laufenden SSH-Server. Standardmäßig lauscht der Serverprozess auf dem Port 2022, der von außen erreichbar sein muss. Falls der Server hinter einem DSL-Router steht, ist also noch eine Portweiterleitung nötig. Nach den Vorbereitungen klappt die Verbindungsaufnahme vom Client aus über den Befehl im Stil von SSH:

et [user]@[server]

Es gilt dabei das übliche Log-in- und SSH-Passwort. Sollte die Verbindung mal stehen bleiben, so reagiert das Terminal vorerst nicht, puffert aber alle Tasteneingaben und die serverseitige Ausgabe, bis die Verbindung wieder steht. Laufende Programme und Befehle werden weiter ausgeführt.