Mosh ist eine Remote-Terminal-Anwendung, die intermittierende Konnektivität unterstützt, Roaming ermöglicht und spekulativen lokalen Echo und die Bearbeitung von Benutzereingaben bietet.
Es zielt darauf ab, die typischen interaktiven Anwendungen von SSH zu unterstützen, plus:
- Mosh hält die Sitzung aktiv, wenn der Client in den Schlafmodus wechselt und später wieder aufwacht oder vorübergehend die Internetverbindung verliert.
- Mosh ermöglicht es dem Client und Server, "zu roamen" und IP-Adressen zu ändern, während die Verbindung aktiv bleibt. Im Gegensatz zu SSH kann Mosh verwendet werden, während zwischen WLAN-Netzwerken oder von WLAN zu mobilen Daten zu kabelgebundenem Ethernet gewechselt wird.
- Der Mosh-Client führt ein prädiktives Modell des Verhaltens des Servers im Hintergrund aus und versucht intelligent zu erraten, wie jede Eingabe den Bildschirmzustand beeinflusst. Wenn er sich in seinen Vorhersagen sicher ist, zeigt er sie dem Benutzer an, während er auf eine Bestätigung vom Server wartet. Die meisten Eingaben und die Verwendung der linken und rechten Pfeiltasten können sofort widergespiegelt werden.
- Infolgedessen ist Mosh auf Hochlatency-Verbindungen verwendbar, z.B. bei einer mobilen Datenverbindung oder unzuverlässigem WLAN. Im Unterschied zu früheren Versuchen, lokale Echo-Modi in anderen Protokollen zu implementieren, funktioniert Mosh ordnungsgemäß mit Vollbildanwendungen wie emacs, vi, alpine und irssi und erholt sich automatisch von gelegentlichen Vorhersagefehlern innerhalb einer RTT. Bei Hochlatency-Verbindungen unterstreicht Mosh seine Vorhersagen, solange sie ausstehen, und entfernt die Unterstreichung, wenn sie vom Server bestätigt werden.
- Es unterstützt kein X-Forwarding oder die nicht-interaktiven Anwendungen von SSH, einschließlich Portweiterleitung.
Weitere Funktionen:
- Es passt seine Bildrate an, um Netzwerkwarteschlangen bei langsamen Verbindungen nicht zu füllen, sodass "Control-C" immer innerhalb einer RTT funktioniert, um einen außer Kontrolle geratenen Prozess zu stoppen.
- Es warnt den Benutzer, wenn es eine Weile nichts vom Server gehört hat.
- Es unterstützt verlustbehaftete Verbindungen, die einen signifikanten Teil ihrer Pakete verlieren.
- Es behandelt einige Unicode-Grenzfälle besser als SSH und bestehende Terminalemulatoren, erfordert jedoch eine UTF-8-Umgebung zum Ausführen.
- Es nutzt.