Mosh (program)

Mosh

Mosh, i den översta raden information om ett avbrott i anslutningen, i terminalen, är de tecken som förutspås och visas lokalt understrukna.
Sorts Fjärråtkomst
Författare Keith Winstein
Utvecklaren Keith Winstein
Skrivet i C++
Operativ system Unix-liknande system
Första upplagan 12 mars 2012  ( 2012-03-12 )
senaste versionen 1.3.2 (22 juli 2017 [1] ) ( 2017-07-22 )
Licens GNU GPLv3 [2] med OpenSSL och iOS undantag
Hemsida mosh.org

Mosh (från engelska  mobile shell ) är ett program för fjärranslutning från en klientdator till en server via Internet. Ger tillgång till en textterminal [3] . Mosh liknar [4] SSH- applikationen , men har ytterligare funktioner utformade för att förbättra den mobila användarupplevelsen. Huvudfunktionerna är:

De största nackdelarna med mosh är de ytterligare serverkraven och avsaknaden av vissa SSH-funktioner (som vidarebefordran av anslutningar).

Implementering

Mosh arbetar på en annan nivå än SSH. Klassiska fjärrterminalåtkomstsystem skickar helt enkelt en ström av byte i varje riktning (server till klient och klient till server) med hjälp av TCP-protokollet (i fallet med SSH), medan mosh kör en terminalemulator på servern för att få information om texten visas på skärmen. Mosh-servern överför sedan denna text till klientsidan av applikationen med hjälp av UDP-protokollet, medan frekvensen av skärmuppdateringar och överföringar varierar beroende på nätverkets hastighet [9] . Detta gör att Mosh kan minska mängden data som den skickar när man använder långsamma eller instabila internetanslutningar.

Plattformar som stöds

Mosh är tillgänglig för de flesta Linux-distributioner , macOS , FreeBSD , NetBSD , OpenBSD , Android , Solaris , Cygwin och som en Chrome-app . Termius för iOS (Apple mobila enheter) inkluderar en oberoende implementering av Mosh [10] -protokollet .

Prestanda

Roaming

Mosh bygger på ett State-Syncronization Protocol (SSP) [11] -schema som stöder enkelpaketsroaming [12] . Efter att ha ändrat klientens IP-adress måste den skicka ett paket till servern. Leverans av ett enda paket räcker för att servern ska fortsätta arbeta med denna klient. Dessutom behöver kunden inte veta om adressändringen.

Paketförlust

I en Mosh utvecklarartikel utvärderades SSP över linjen med en paketförlustgrad på 29 %. Jämfört med SSH och TCP-protokollet fick de en 50x minskning i genomsnittlig svarstid (0,33 sekunder med mosh, istället för 16,8 sekunder). En annan studie av studenter vid Stanford University visade att SSP minskade den genomsnittliga svarstiden med en faktor 30 (från 5,9 sekunder till 0,19 sekunder) [13] .

Lokalt eko

Enligt utvecklarna av mosh kan deras applikation korrekt förutsäga sammanhanget 70 % av gångerna och omedelbart visa de tecken som användaren har angett, vilket minskar mediantangenttryckningssvarstiden till mindre än 5ms (maskering av nätverksfördröjningar ). En annan studie visade att mosh snabbt kunde visa cirka 55 % av användarens tangenttryckningar [14] .

Nackdelar

Jämfört med den mer populära SSH har mosh följande nackdelar:

Serverkrav

Den största nackdelen med mosh är behovet av att använda sin egen server. mosh kräver en direkt UDP-anslutning till servern [15] . Servrar som skyddas av en portbegränsad brandvägg kan inte använda mosh (till exempel om brandväggen endast tillåter en inkommande TCP SSH-anslutning till servern). Problematiska är också servrar som har en indirekt anslutning till nätverket. SSH låter dig i vissa fall arbeta med dem med alternativet 'ProxyCommand', men det här alternativet stöds inte i mosh [16] .

En port per anslutning

Som standard försöker servern allokera den första lediga UDP -porten i intervallet 60001-60999, en port per anslutning. Denna dynamiska portallokering är en extra overhead för brandväggshantering [17] [18] .

Inget stöd för IPv6-roaming

Mosh 1.2.5 stöder endast fasta IPv6-anslutningar, inte IPv6-roaming [19] . Detta kräver användning av kommandoradsalternativet "-6". Det finns en experimentell version av mosh med stöd för flervägs IPv6 och dynamisk växling mellan IPv4 och IPv6 [20] [21] .

Hoppa över och rulla terminal

Mosh stöder inte rullningshistorik i terminalen. Implementeringsarbete var planerat till release 1.3 [22] . Ett sätt att bekämpa detta är att använda mosh i kombination med terminalmultiplexerskärmen eller tmux , som implementerar terminalens egen historikrullningsfunktion [23] .

Se även

Anteckningar

  1. Winstein, Keith mosh 1.3.2 släppt . E-postlista (22 juli 2017). Hämtad: 31 juli 2017.
  2. Mosh 1.3 Release, SSH Alternatives Arkiverad 25 oktober 2018 på Wayback Machine /Opennet, 04/06/2017
  3. "Mosh: det mobila skalet" Arkiverad 5 augusti 2016 på Wayback Machine . Hämtad 28 mars 2013.
  4. Brockmeier, Joe. "Into the Mosh Pit: A Mobile Shell Replacement for SSH" Arkiverad 20 mars 2014 på Wayback Machine , linux.com 10 april 2012. Hämtad 28 mars 2013.
  5. Delony, David. "Mosh: Secure Shell Without the Pain" Arkiverad 5 juli 2018 på Wayback Machine , Technopedia 19 oktober 2012. Hämtad 28 mars 2013.
  6. Cox, John. "MIT-forskare kartlägger ett nytt tillvägagångssätt för mobila Internet-protokoll" Arkiverad 18 oktober 2012. , Network World , 6 juli 2012. Hämtad 28 mars 2013.
  7. Beckert, Axel. "Mosh och AutoSSH: Remote shell-verktyg som gör ditt liv lättare på ett långsamt eller ständigt föränderligt nätverk" Arkiverad 21 oktober 2020 på Wayback Machine , Linux Magazine , november 2012.
  8. Leyden, John. "MITs tankeläsande Mosh ställer sig mot SSH-demoner" Arkiverad 25 oktober 2018 på Wayback Machine , The Register , 13 april 2012. Hämtad 28 mars 2013.
  9. Winstein, Keith. "Mosh: An Interactive Remote Shell for Mobile Clients" , USENIX Annual Technical Conference 2012, Boston, Massachusetts, 14 juni 2012.
  10. "Termius Features" Arkiverad 25 oktober 2018 på Wayback Machine , Crystalnix.
  11. "MIT avslöjar ett nytt internetprotokoll för mobila klienter" . Hämtad 25 oktober 2018. Arkiverad från originalet 1 februari 2016.
  12. Winstein, Keith och Balakrishnan, Hari. "Mosh: An Interactive Remote Shell for Mobile Clients (mer detaljerat utkast)" Arkiverad 14 mars 2016 på Wayback Machine . Hämtad 28 mars 2013.
  13. Nagaraj, Kanthi och McMilin, Emily. "Mosh" Arkiverad 25 oktober 2018 på Wayback Machine , Reproducing Network Research 14 mars 2013. Hämtad 28 mars 2013.
  14. Aljunied, Ahmed. "Evaluation of Mosh 'Mobile Shell' Performance Results" Arkiverad 26 augusti 2018 på Wayback Machine , Reproducing Network Research , 13 mars 2013. Hämtad 28 mars 2013.
  15. ↑ "'Mosh kommer att logga in användaren via SSH och sedan starta en anslutning på en UDP-port mellan 60000 och 61000. '" Arkiverad 5 augusti 2016 på Wayback Machine , Hämtad 19 juni 2014.
  16. "Mosh-felrapport #285: Kan inte använda en ProxyCommand-baserad SSH-anslutning" , Hämtad 18 juni 2014
  17. "Farorna med att öppna upp ett brett utbud av hamnar? (mosh)" Arkiverad 2 september 2018 på Wayback Machine , IT-säkerhet (Stack Exchange) , 13 april 2012. Hämtad 28 mars 2013.
  18. Multiplexa fler sessioner till samma UDP-port
  19. [https://web.archive.org/web/20210701202930/http://mailman.mit.edu/pipermail/mosh-users/2015-July/000283.html Arkiverad 1 juli 2021 på Wayback Machine [mosh -användare] mosh 1.2.5 släppt]
  20. GitHub - boutier/mosh: Flervägsversion av Mobile Shell . Hämtad 25 oktober 2018. Arkiverad från originalet 11 juni 2018.
  21. Matthieu Boutier & Juliusz Chroboczek (2015), User -space multipath UDP i Mosh 
  22. https://github.com/keithw/mosh/issues/2 "Stöd för rullning är planerat för version 1.3"
  23. "Bläddra tillbaka och alternativ skärm (var: Använd alternativ skärm på smcup/rmcup)"

Länkar