Mosh (Software)

Mosh (mobile shell) ist ein Computerprogramm, welches benutzt wird, um lokal eine entfernte Kommandozeile verfügbar zu machen.[1] Mosh ähnelt SSH,[2] hat aber weitere Funktionalitäten, um die Verwendung für mobile Nutzer zu verbessern. Die Hauptfunktionen sind:

* Mosh hält die Verbindung aufrecht, auch wenn der Benutzer „roamt“ und eine andere IP-Adresse erhält, beispielsweise wenn der Benutzer eines WLAN in ein anderes WLAN wechselt oder von WLAN zu UMTS wechselt.[3]
* Mosh hält die Verbindung offen, wenn ein Benutzer die Internetverbindung verliert oder stellt den Client in einen „Schlafmodus“. SSH kann seine Verbindung verlieren, da TCP Pakete verwirft, wenn der Sender nach einer bestimmten Zeit (Timeout) keine Bestätigung erhält[4]; die Terminalsitzung mitsamt den in ihr ggf. laufenden Programmen sind in diesem Fall beendet, soweit sie nicht durch besondere Vorkehrungen, etwa Verwendung von screen, bewahrt wurden.
* Mosh versucht, dem Benutzer sofort zu zeigen, welche Tasten er getippt hat und welche Buchstaben und Wörter er gelöscht hat, um die Latenz auszugleichen.[5]

Die Hauptnachteile von Mosh sind die zusätzlich an den Server gestellten Anforderungen und dass manche Zusatzfunktionen von SSH nicht verwendet werden können.

## Unterstützte Plattformen

[Bearbeiten | Quelltext bearbeiten]

Mosh ist für die meisten Linux-Distributionen, macOS, NetBSD, FreeBSD und OpenBSD, Android, Solaris und Cygwin verfügbar.[6] Für iOS stellte bis 2015 die Applikation iSSH eine unabhängige Implementation von Mosh zur Verfügung[7]. Inzwischen gibt es mit Blink[8] einen Nachfolger. Mosh unterstützt IPv6 ab Version 1.2.5.[9]

## Nachteile

[Bearbeiten | Quelltext bearbeiten]

Anforderungen an den Server

Der Hauptnachteil von Mosh ist, dass es im Vergleich zu ssh zusätzliche Anforderungen an einen Server stellt, denn es benötigt aufgrund seines Designs vollen UDP-Zugriff auf den Server.[10] Auf Servern, die diese Anforderung nicht erfüllen, kann Mosh nicht eingesetzt werden. Beispiele dafür sind Systeme hinter Firewalls, die nur den ssh-Port via TCP freigeben. Problematisch sind auch Server, die nur indirekt erreichbar sind. Während man dies bei ssh mit der Option „ProxyCommand“ lösen kann, wird dies von Mosh nicht unterstützt.[11]

Ein Port pro Verbindung

Standardmäßig versucht der Mosh-Server pro Verbindung den ersten freien UDP-Port aus dem Range 60000–61000 zu belegen. Diese dynamische Port-Nutzung wird in Bezug auf eine saubere Firewallkonfiguration als sicherheitsrelevanter Nachteil angesehen.[12] Firewalls versuchen in der Regel Verbindungen zu tracken (sogenanntes Stateful Filtering), welches auf SYN/ACK flags im TCP basiert, UDP-Pakete haben jedoch solche Flags nicht.[13]
Workarounds:

1. Pro Verbindung kann der UDP-Port gesetzt werden, so dass es ausreicht, eine geringe Anzahl an Ports freizugeben.[14]
2. Deep Packet Inspection Firewalls und Application Firewalls können eingesetzt werden, um eine inhaltliche Analyse des Datenverkehrs zu machen.

Terminal Scrollback und output drops

Scrollback wird bislang nicht unterstützt – sofern ein Terminal-Emulator mit Scrollbars eingesetzt wird, dann werden diese ausgeblendet. Diese Funktion ist für das Release 1.3 eingeplant.[15] Ein Workaround ist derzeit, dass Mosh in Verbindung mit Screen oder tmux eingesetzt wird, die eine eigene Scrollback-Funktionalität mitbringen.[16]

SSH-Agent-Forwarding

SSH-Agent-Forwarding wird bislang nicht unterstützt.[17]

X11-Forwarding

X11-Forwarding wird bislang nicht unterstützt.[18]

## Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]

1. ↑ Archivierte Kopie (Memento des Originals vom 5. August 2016 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/mosh.mit.edu
2. ↑ https://www.linux.com/learn/tutorials/562553-into-the-mosh-pit-a-mobile-shell-replacement-for-ssh
3. ↑ http://www.techopedia.com/2/28746/tech-support/linux/mosh-secure-shell-without-the-pain
4. ↑ Archivierte Kopie (Memento des Originals vom 18. Oktober 2012 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.networkworld.com
5. ↑ http://www.linux-magazine.com/Issues/2012/144/Mosh-and-AutoSSH
6. ↑ Archivierte Kopie (Memento des Originals vom 5. August 2016 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/mosh.mit.edu
7. ↑ Archivierte Kopie (Memento des Originals vom 18. September 2012 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.zinger-soft.com
8. ↑ http://www.blink.sh
9. ↑ https://github.com/keithw/mosh/issues/81
10. ↑ "'Mosh will log the user in via SSH, then start a connection on a UDP port between 60000 and 61000.'" (Memento des Originals vom 5. August 2016 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/mosh.mit.edu, abgerufen am 19. Juni 2014.
11. ↑ "Mosh bug report #285: Can't use a ProxyCommand-based SSH connection", abgerufen am 18. Juni 2014.
12. ↑ "Dangers of opening up a wide range of ports? (mosh)", IT Security (Stack Exchange), 13. April 2012. Abgerufen am 28. März 2013.
13. ↑ Multiplexing more sessions into same UDP port
14. ↑ "use -p to define remote UDP port" (Memento des Originals vom 5. August 2016 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/mosh.mit.edu
15. ↑ https://github.com/keithw/mosh/issues/2 "Scrollback support is planned for version 1.3"
16. ↑ "Scrollback and alternate screen (was: Use alternate screen on smcup/rmcup)"
17. ↑ "SSH Agent Forwarding"
18. ↑ "Support X forwarding"