Mosh (program)

Mosh

Mosh, v horním řádku informace o přerušení spojení, v terminálu jsou podtrženy znaky predikované a zobrazené lokálně.
Typ Vzdálený přístup
Autor Keith Winstein
Vývojář Keith Winstein
Zapsáno v C++
Operační systém Unixové systémy
První vydání 12. března 2012  ( 2012-03-12 )
Nejnovější verze 1.3.2 (22. července 2017 [1] ) ( 22. 7. 2017 )
Licence GNU GPLv3 [2] s výjimkami OpenSSL a iOS
webová stránka mosh.org

Mosh (z anglického  mobile shell ) je program pro vzdálené připojení z klientského počítače k ​​serveru přes internet. Poskytuje přístup k textovému terminálu [3] . Mosh je podobný [4] aplikaci SSH , ale má další funkce určené ke zlepšení uživatelského zážitku na mobilních zařízeních. Hlavní funkce jsou:

Hlavní nevýhodou mosh jsou dodatečné požadavky na server a nedostatek některých funkcí SSH (jako je přesměrování připojení).

Implementace

Mosh funguje na jiné úrovni než SSH. Klasické systémy vzdáleného terminálového přístupu jednoduše posílají proud bajtů v každém směru (server ke klientovi a klient k serveru) pomocí protokolu TCP (v případě SSH), zatímco mosh spouští na serveru emulátor terminálu , aby získal informace o textu. zobrazené na obrazovce. Mosh server pak přenáší tento text na klientskou stranu aplikace pomocí protokolu UDP, přičemž frekvence aktualizací a přenosů obrazovky se liší v závislosti na rychlosti sítě [9] . To umožňuje Mosh snížit množství dat, která odesílá při použití pomalého nebo nestabilního internetového připojení.

Podporované platformy

Mosh je k dispozici pro většinu distribucí Linuxu , macOS , FreeBSD , NetBSD , OpenBSD , Android , Solaris , Cygwin a jako aplikace pro Chrome . Termius pro iOS (mobilní zařízení Apple) obsahuje nezávislou implementaci protokolu Mosh [10] .

Výkon

Roaming

Mosh je postaven na schématu State-Syncronization Protocol (SSP) [11] , které podporuje roaming s jedním paketem [12] . Po změně IP adresy klienta musí odeslat paket na server. Doručení jednoho paketu stačí k tomu, aby server pokračoval v práci s tímto klientem. Klient navíc nemusí o změně adresy vědět.

Ztráta paketů

V článku pro vývojáře mosh bylo SSP over line vyhodnoceno s mírou ztráty paketů 29 %. Ve srovnání s SSH a protokolem TCP dosáhly 50x zkrácení průměrné doby odezvy (0,33 sekundy s mosh místo 16,8 sekundy). Jiná studie studentů Stanfordské univerzity ukázala, že SSP snížilo průměrnou dobu odezvy faktorem 30 (z 5,9 sekund na 0,19 sekund) [13] .

Místní echo

Podle vývojářů mosh je jejich aplikace schopna správně předvídat kontext 70 % času a okamžitě zobrazit znaky zadané uživatelem, čímž zkrátí střední dobu odezvy na stisk klávesy na méně než 5 ms (maskování zpoždění sítě ). Jiná studie ukázala, že mosh byl schopen rychle zobrazit asi 55 % úhozů uživatele [14] .

Nevýhody

Ve srovnání s populárnějším SSH má mosh následující nevýhody:

Požadavky na server

Hlavní nevýhodou mosh je nutnost použití vlastního serveru. mosh vyžaduje přímé udp připojení k serveru [15] . Servery chráněné firewallem s omezeným portem nemohou používat mosh (například pokud firewall umožňuje pouze příchozí TCP SSH připojení k serveru). Problematické jsou také servery, které mají nepřímé připojení k síti. SSH v některých případech umožňuje s nimi pracovat pomocí možnosti 'ProxyCommand', ale tato možnost není podporována v mosh [16] .

Jeden port na připojení

Ve výchozím nastavení se server pokouší přidělit první volný port UDP v rozsahu 60001-60999, jeden port na připojení. Toto dynamické přidělování portů představuje další režii pro správu brány firewall [17] [18] .

Žádná podpora pro roaming IPv6

Mosh 1.2.5 podporuje pouze pevná připojení IPv6, nikoli roaming IPv6 [19] . To vyžaduje použití volby příkazového řádku "-6". Existuje experimentální verze mosh s podporou multipath IPv6 a dynamickým přepínáním mezi IPv4 a IPv6 [20] [21] .

Terminál přeskakování a rolování

Mosh nepodporuje rolování historie v terminálu. Implementační práce byly naplánovány na verzi 1.3 [22] . Jedním ze způsobů, jak proti tomu bojovat, je použít mosh v kombinaci s terminálovým multiplexerem nebo tmux , které implementují vlastní funkci posouvání historie terminálu [23] .

Viz také

Poznámky

  1. Vydán Winstein, Keith mosh 1.3.2 . Seznam adres (22. července 2017). Staženo: 31. července 2017.
  2. Mosh 1.3 Release, SSH Alternatives Archived 25. října 2018 na Wayback Machine /Opennet, 04/06/2017
  3. „Mosh: the mobile shell“ Archivováno 5. srpna 2016 na Wayback Machine . Načteno 28. března 2013.
  4. Brockmeier, Joe. „Into the Mosh Pit: A Mobile Shell Replacement for SSH“ Archivováno 20. března 2014 na Wayback Machine , linux.com , 10. dubna 2012. Staženo 28. března 2013.
  5. Delony, David. "Mosh: Secure Shell Without the Pain" Archivováno 5. července 2018 na Wayback Machine , Technopedia , 19. října 2012. Staženo 28. března 2013.
  6. Cox, John. „Výzkumníci MIT mapují nový přístup k mobilním internetovým protokolům“ Archivováno 18. října 2012. , Network World , 6. července 2012. Staženo 28. března 2013.
  7. Beckert, Axel. „Mosh a AutoSSH: Nástroje vzdáleného prostředí, které vám usnadní život na pomalé nebo neustále se měnící síti“ Archivováno 21. října 2020 na Wayback Machine , Linux Magazine , listopad 2012.
  8. Leyden, John. „Mosh, který čte mysl MIT, se postaví proti démonům SSH“ Archivováno 25. října 2018 na Wayback Machine , The Register , 13. dubna 2012. Staženo 28. března 2013.
  9. Winstein, Keith. "Mosh: Interactive Remote Shell for Mobile Clients" , USENIX Annual Technical Conference 2012, Boston, Mass., 14. června 2012.
  10. „Termius Features“ Archivováno 25. října 2018 ve Wayback Machine , Crystalnix.
  11. „MIT odhaluje nový internetový protokol pro mobilní klienty“ . Získáno 25. října 2018. Archivováno z originálu 1. února 2016.
  12. Winstein, Keith a Balakrishnan, Hari. „Mosh: Interactive Remote Shell for Mobile Clients (podrobnější návrh)“ Archivováno 14. března 2016 na Wayback Machine . Načteno 28. března 2013.
  13. Nagaraj, Kanthi a McMilin, Emily. "Mosh" Archived 25. října 2018 na Wayback Machine , Reproducing Network Research , 14. března 2013. Staženo 28. března 2013.
  14. Aljunied, Ahmed. "Evaluation of Mosh 'Mobile Shell' Performance Results" Archivováno 26. srpna 2018 na Wayback Machine , Reproducing Network Research , 13. března 2013. Staženo 28. března 2013.
  15. ↑ "'Mosh přihlásí uživatele přes SSH a poté zahájí připojení na UDP portu mezi 60000 a 61000. '" Archivováno 5. srpna 2016 na Wayback Machine , staženo 19. června 2014.
  16. "Mosh bug report #285: Nelze použít připojení SSH založené na ProxyCommand" , Načteno 18. června 2014
  17. „Nebezpečí otevření široké škály portů? (mosh)" Archivováno 2. září 2018 na Wayback Machine , IT Security (Stack Exchange) , 13. dubna 2012. Staženo 28. března 2013.
  18. Multiplexování více relací do stejného portu UDP
  19. [https://web.archive.org/web/20210701202930/http://mailman.mit.edu/pipermail/mosh-users/2015-July/000283.html Archivováno 1. července 2021 na Wayback Machine [mosh -users] vydán mosh 1.2.5]
  20. GitHub - boutier/mosh: Multipath verze Mobile Shell . Získáno 25. října 2018. Archivováno z originálu 11. června 2018.
  21. Matthieu Boutier & Juliusz Chroboczek (2015), Multipath UDP v uživatelském prostoru v Mosh 
  22. https://github.com/keithw/mosh/issues/2 "Pro verzi 1.3 je plánována podpora rolování"
  23. "Scrollback a alternativní obrazovka (bylo: Použít alternativní obrazovku na smcup/rmcup)"

Odkazy