Standhaft

Fürs Arbeiten auf entfernten Rechnern greifen viele Nutzer auf ssh zurück. Allerdings eignet sich die Secure Shell wenig für den Einsatz auf Mobilgeräten mit langsamer oder instabiler Internetverbindung. Die am MIT entwickelte Mobile Shell mosh soll Abhilfe schaffen.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 4 Min.
Von
  • Udo Seidel
Inhaltsverzeichnis

Ständig online zu sein, ist heutzutage eher die Regel als die Ausnahme. Der Administrator kann bequem vom Strand aus auf seinen Systemen nach dem Rechten sehen, etwa mit der Secure Shell ssh. Allerdings nur, wenn das drahtlose Netz – sei es WLAN oder UMTS – keine Lücken aufweist und die IP-Adresse des Clients immer gleich bleibt. Robuste Verbindungen unter solch schwierigen Bedingungen verspricht die Mobile Shell mosh (mosh.mit.edu).

Das SSH-Protokoll basiert auf TCP und setzt deshalb eine dauerhafte Verbindung zwischen Client und Server voraus. mosh hingegen nutzt das verbindungslose User Datagram Protocol (UDP). Außerdem führen Client und Server keinen synchronen Dialog, wie es bei ssh oder telnet der Fall ist: Der Client verwaltet eine eigene Kopie des Bildschirminhalts und synchronisiert sie bei Bedarf mit dem Server mithilfe des eigens dafür entwickelten State Synchronization Protocol (SSP).

Damit das sicher vonstatten geht, sind alle UDP-Pakete AES128-verschlüsselt und obendrein kryptografisch authentisiert. Zur Nutzerauthentifizierung und zum Starten des Servers mosh-server baut mosh temporär eine ssh-Verbindung auf. Der Server nutzt sie außerdem zum Übertragen eines Schlüssels, mit dem der Client später seine Identität nachweisen kann – seine IP-Adresse und Portnummer können dadurch beliebig wechseln. Anschließend starten Client und Server zwei separate SSP-Instanzen, eine für jede Übertragungsrichtung.

Kompilierte Pakete für die aktuelle mosh-Version 1.2 gibt es für die gängigen Linux-Distributionen, FreeBSD und Mac OS X. Eine Android-App steht auf der Wunschliste der Entwickler. Wer keine Binärdateien für sein System findet, kann den unter der GPL stehenden Quellcode herunterladen und selbst übersetzen. Dazu sind einige zusätzliche Bibliotheken notwendig; die genaue Liste ist auf der Mosh-Homepage zu finden. Entwickler, die zu mosh beitragen wollen, können auf das git-Repository zugreifen.

Im Paket enthalten sind die Binärprogramme mosh-client und mosh-server sowie das Wrapper-Skript mosh, dessen Bedienung der von ssh nachempfunden ist (siehe Tabelle). Im Gegensatz zum SSH-Daemon sshd läuft mosh-server nicht als System-Daemon, sondern mit den Rechten des angemeldeten Nutzers. Das Programm muss auch nicht in einem Systemverzeichnis installiert sein, sondern kann im Home-Verzeichnis des Anwenders liegen. Der muss mosh gegebenenfalls beim Verbindungsaufbau mit der Option - -server=/pfad/zu/mosh-server verraten, wo sich die Datei befindet. Läuft der SSH-Server nicht auf dem gewohnten Port 22, kann man das dem Client mit der Option - -ssh="ssh –p <port>" mitteilen.

Einmal aufgebaut, ist eine mosh-Verbindung resistent sowohl gegen Wechsel der IP-Adresse als auch gegen ein Suspend oder Hibernate des Client-Rechners. Erst das Schließen der Shell auf dem Zielrechner oder die Tastenkombination Strg-^ . beendet die Sitzung wieder.

Da mosh den Bildschirminhalt auf der Client-Seite spiegelt, kann sie sogar eine Ausgabe vortäuschen, wenn die Verbindung zum Server unterbrochen ist. Das Programm mutmaßt anhand der bisherigen Transaktionen, wie der Server auf Nutzereingaben reagieren würde. Dabei geht es von der Annahme aus, dass der Server normale Zeichen „echot“ und dass die Cursortasten den gewohnten Effekt haben. Während ssh-Nutzer bei einer langsamen Verbindung lange warten müssen, bis der Server einen Tastendruck quittiert, gibt mosh sofort eine Rückmeldung. Dass die spekulativen Charakter hat, kennzeichnet das Programm durch Unterstreichen. Wem das zu unheimlich ist, der kann die Funktion mit der Option –n respektive - -predict=never abschalten.

Zurzeit offenbart mosh noch einige Schwächen beim Synchronisieren der Bildschirme zwischen Client und Server. Designbedingt sind schnell veränderliche Daten, etwa die ASCII-Anzeige einer Uhr inklusive Sekunden, eine Herausforderung, welche die mobile Shell nicht meistern kann. Unerwartet kamen hingegen fehlerhafte Darstellungen von Kommando-Prompts beim Paketverwalter yum. Außerdem fehlt mosh noch Unterstützung für X11-Forwarding und IPv6. Beides steht jedoch schon auf der Agenda der Entwickler.

leitet eine Unix/Linux-Sysadmin-Gruppe bei der Amadeus Data Processing GmbH in Erding.

Alle Links: www.ix.de/ix1207155

Gängige mosh-Kommandos
Kommando Funktion
mosh server.example.com mit Rechner verbinden
mosh user@server.example.com als anderer Benutzer verbinden
mosh –p 1234 server.example.com UDP-Port wählen
mosh --ssh="<befehl>" alternatives ssh-Kommando
mosh --server="<datei>" Pfad zu mosh-server
mosh --help Onlinehilfe aufrufen

(mr)