Linux und Ich

Blog über Ubuntu, Linux, Android und IT

mosh-icon

Mosh als SSH-Ergänzung für wacklige UMTS- oder LTE-Datenverbindungen

| 3 Kommentare

Wer mal “schnell” während einer Zugfahrt versucht hat etwas mittels einer mobilen UMTS- oder LTE-Datenverbindung und SSH auf einem Server zu managen, der wird meist nach zahlreichen Versuchen gefrustet aufgegeben haben. Erst wenn der Zug vor einem Bahnhof langsam durch die Stadt rollt, bekommt man eine stabile Internetverbindung und damit auch endlich die Möglichkeit endlich störungsfrei zu arbeiten. Während der Fahrt bricht einfach zu oft die Verbindung weg. Abhilfe schafft das für wechselnde und instabile Verbindungen geschaffene Mosh.

Mosh wurde als SSH-Ersatz für instabile (die Verbindung darf komplett abbrechen, man kann sogar den Rechner in den Standby schicken) , wechselnde (man kann eine Mosh-Verbindung mit UMTS starten und über ein WLAN wieder aufnehmen) und langsame Internetverbindungen (Tastatureingaben werden bevorzugt durchgeleitet) geschaffen. Also etwa für die User, die sich mit einer wackligen UMTS-Leitung per SSH auf einen Server verbinden möchten. Es gibt Mosh für Linuxe, Windows und Macs und natürlich auch für mobile Betriebssysteme. So kann man Mosh vom PC und vom Handy aus benutzen.

Mosh neben SSH auf dem Server installieren

Um Mosh zum Laufen zu bekommen, muss das Programm auf beiden Rechnern installiert werden. Auf dem Server muss natürlich noch zusätzlich SSH installiert sein, da SSH weiterhin zur Authentifizierung des Users und zum Verbindungsaufbau benötigt wird. Mosh krallt sich erst nach dem Aufbau der verschlüsselten Leitung die Kontrolle über die Kommunikation.

# Mosh unter Debian/Ubuntu installieren...
$ sudo apt-get install mosh
# Mosh unter Arch Linux installieren...
$ sudo pacman -S mosh

Unter Ubuntu gibt es Mosh seit Precise ganz regulär in den Paketquellen, daher erspare ich mir Ausführungen über das Mosh-PPA. Dort gibt es allerdings aktuellere Versionen von Mosh, von daher könnte das PPA auch bei aktuelleren Ubuntus interessant sein. Arch-User finden Mosh ganz normal im Community-Repo. Und auch unter zahlreichen anderen Linuxen lässt sich Mosh ganz normal über die Paketquellen installieren, die Mosh-Homepage listet die Installationswege recht umfassend auf.

Mosh ohne Root-Rechte? Geht… vielleicht!

Problematisch wird es allerdings wenn man Mosh mit einem Server nutzen möchte, auf dem man zwar über ein SSH-Login verfügt, aber keine Root-Rechte hat. Mosh lässt sich in der Theorie ohne Root-Rechte — auch auf der Seite des Servers — betreiben, daher kann man sich Mosh auch selber kompilieren und beim Login ausführen. Mit install-user-mosh.sh findet ihr auch ein Skript, mit dem sich Mosh ohne große Aktion bauen lässt.

Allerdings braucht es zum erfolgreichen Bauen von Mosh eine lange Latte von Bibliotheken und Build-Tools, die wahrscheinlich nur auf wenigen Servern installiert sein dürften. Von daher solltet ihr lieber gleich beim Administrator des Servers anklopfen und lieb drum bitten doch schnell Mosh zu installieren. So wird das Programm sauber installiert, Sicherheitslücken geflickt und ihr müsst nicht groß basteln.

# Mosh auch ohne Root-Rechte installieren...
$ wget https://gist.githubusercontent.com/ViViDboarder/11000123/raw/1b71e37006db1d7dfdf8c59e4ba111d73645bec1/install-user-mosh.sh
$ chmod +x install-user-mosh.sh
$ ./install-user-mosh.sh

# Allerdings nur mit diesen Abhängigkeiten...
$ sudo apt-get install g++ protobuf-compiler libprotobuf-dev libboost-dev libutempter-dev libncurses5-dev zlib1g-dev expect-dev libexpect-perl liblocales-us-perl liblocales locales-all liblocale-us-perl liblocales-perl git libssl-dev

Mit Mosh auf den Server verbinden

Wurde Mosh auf Server und Client installiert, kann man wie gewohnt seine SSH-Verbindung aufrufen. Im Normalfall ersetzt ihr einfach das “ssh” vor dem Befehl mit einem “mosh”, die Angabe des Users und des Servers bleiben gleich. Ein bisschen aufwändiger wird es allerdings, wenn man seinen SSH-Server nicht wie üblich auf Port 22 laufen hat, in diesem Fall muss man den von SSH benutzten Port ein wenig umständlicher angeben.

# Mit Mosh zu einem SSH-Server verbinden...
$ mosh du@dein.server.de
# Mit Mosh zu einem SSH-Server auf Port 222 verbinden...
$ mosh --ssh="ssh -p 222" du@dein.server.de

Ansonsten kann man nun genauso auf dem Server arbeiten, wie man es von SSH gewohnt ist — fast! Um Daten zu sparen überträgt Mosh immer nur die letzten Änderungen in der Shell. Was schon einmal übertragen wurde, wird noch nochmal auf den Server geschickt. Unter anderem deshalb funktioniert der Scrollback-Speicher nicht. Man kann also nicht mit Shift-PageUp/PageDown oder mit dem Mausrad die letzten Ausgaben der Shell hervorholen.

Im Handling unterscheidet sich Mosh nicht von anderen Shells.

Mosh für Android und Chrome/Chrome OS

Wie schon mehrfach angesprochen ist Mosh natürlich ideal für mobile Geräte. Daher ist es auch nicht verwunderlich, dass es Mosh-Clients für Handys gibt — allerdings wohl nur für Android. Android-User können auf JuiceSSH zurückgreifen, ein SSH-Client für Android den ich schon mehrfach hier im Blog hatte. Die App kostet eine Kleinigkeit, sie ist aber definitiv ihr Geld wert. Mosh lässt sich dort in den Settings der Verbindung einstellen. Und auch für Chrome-, Chromium oder Chrome-OS-User gibt es eine Mosh-Browser-App, die sich direkt im Webbrowser ausführen lässt.

JuiceSSH kann unter Android mit Mosh arbeiten.

Mosh gibt es inzwischen auch als Browser-App für Chrome.

 

Autor: Christoph

Hallo, ich bin Christoph -- Linux-User, Blogger und pragmatischer Fan freier Software. Wie Ihr ohne Zweifel bemerkt haben solltet schreibe ich hier über Linux im Allgemeinen, Ubuntu im Speziellen, sowie Android und andere Internet-Themen. Wenn du Freude an meinen Artikel gefunden haben solltest, dann kannst du mir über Facebook, Google+ oder Twitter oder natürlich dem Blog folgen.

3 Kommentare

  1. Kenne mosh jetzt auch schon etwas länger und kann es definitiv empfehlen!

    Cool ist auch, dass mosh SSH zur Verbindung nutzt, man also an seinen Keys und so weiter gar nichts ändern muss. Einfach mosh [alias] statt ssh [alias] eintippen, feddich :)

  2. Mosh ist auch super, wenn die Internetverbindung einfach nur voll ausgelastet ist.

    Normales SSH wird da schon ziemlich zäh.

  3. Ich hab Mosh neulich während einer Zugfahrt genutzt. Per Mosh auf meinen kleinen Rooti, wo irsii und mutt laufen. So konnte ich trotz wackliger verbindung alles machen. super!

Hinterlasse eine Antwort

Auf Linux und Ich darf anonym kommentiert werden. Die Felder für Name und E-Mail-Adresse dürfen beim Eintragen eures Kommentars leer bleiben. Ich freue mich aber über jeden Kommentar, zu dem der Autor mit seinem Namen steht.