Mosh (program)

Mosh

Mosh, în linia de sus informații despre o întrerupere a conexiunii, în terminal sunt subliniate caracterele prezise și afișate local.
Tip de Acces de la distanță
Autor Keith Winstein
Dezvoltator Keith Winstein
Scris in C++
Sistem de operare Sisteme asemănătoare Unix
Prima editie 12 martie 2012  ( 2012-03-12 )
ultima versiune 1.3.2 (22 iulie 2017 [1] ) ( 22.07.2017 )
Licență GNU GPLv3 [2] cu excepții OpenSSL și iOS
Site-ul web mosh.org

Mosh (din engleză  mobile shell ) este un program de conectare la distanță de la un computer client la un server prin Internet. Oferă acces la un terminal text [3] . Mosh este similar [4] cu aplicația SSH , dar are caracteristici suplimentare concepute pentru a îmbunătăți experiența utilizatorului mobil. Principalele funcții sunt:

Principalele dezavantaje ale mosh sunt cerințele suplimentare de server și lipsa unor caracteristici SSH (cum ar fi redirecționarea conexiunii).

Implementare

Mosh funcționează la un alt nivel decât SSH. Sistemele clasice de acces la terminale la distanță trimit pur și simplu un flux de octeți în fiecare direcție (server la client și client la server) folosind protocolul TCP (în cazul SSH), în timp ce mosh rulează un emulator de terminal pe server pentru a obține informații despre text afișate pe ecran. Serverul mosh transmite apoi acest text către partea client a aplicației folosind protocolul UDP, în timp ce frecvența actualizărilor și transferurilor ecranului variază în funcție de viteza rețelei [9] . Acest lucru îi permite lui Mosh să reducă cantitatea de date pe care o trimite atunci când utilizează conexiuni la Internet lente sau instabile.

Platforme acceptate

Mosh este disponibil pentru majoritatea distribuțiilor Linux , macOS , FreeBSD , NetBSD , OpenBSD , Android , Solaris , Cygwin și ca aplicație Chrome . Termius pentru iOS (dispozitive mobile Apple) include o implementare independentă a protocolului Mosh [10] .

Performanță

Roaming

Mosh este construit pe o schemă State-Syncronization Protocol (SSP) [11] care acceptă roaming cu un singur pachet [12] . După schimbarea adresei IP a clientului, acesta trebuie să trimită un pachet către server. Livrarea unui singur pachet este suficientă pentru ca serverul să continue să lucreze cu acest client. Mai mult, clientul nu trebuie să știe despre schimbarea adresei sale.

Pierderea pachetelor

Într-un articol pentru dezvoltatori mosh, SSP over the line a fost evaluat cu o rată de pierdere a pachetelor de 29%. În comparație cu SSH și protocolul TCP , au obținut o reducere de 50 ori a timpului mediu de răspuns (0,33 secunde cu mosh, în loc de 16,8 secunde). Un alt studiu al studenților de la Universitatea Stanford a arătat că SSP a redus timpul mediu de răspuns cu un factor de 30 (de la 5,9 secunde la 0,19 secunde) [13] .

Ecou local

Potrivit dezvoltatorilor mosh, aplicația lor este capabilă să prezică corect contextul în 70% din timp și să afișeze imediat caracterele introduse de utilizator, reducând timpul mediu de răspuns la apăsarea tastei la mai puțin de 5 ms (mascarea întârzierilor de rețea ). Un alt studiu a arătat că mosh a fost capabil să afișeze rapid aproximativ 55% din tastele utilizatorului [14] .

Dezavantaje

În comparație cu SSH mai popular , mosh are următoarele dezavantaje:

Cerința serverului

Principalul dezavantaj al mosh este necesitatea de a folosi propriul server. mosh necesită o conexiune udp directă la server [15] . Serverele protejate de un firewall cu restricții de port nu pot folosi mosh (de exemplu, dacă firewall-ul permite doar o conexiune TCP SSH de intrare la server). Probleme sunt și serverele care au o conexiune indirectă la rețea. SSH în unele cazuri vă permite să lucrați cu ei folosind opțiunea „ProxyCommand”, dar această opțiune nu este acceptată în mosh [16] .

Un port per conexiune

În mod implicit, serverul încearcă să aloce primul port UDP liber din intervalul 60001-60999, câte un port pe conexiune. Această alocare dinamică de porturi este o suprasarcină suplimentară pentru managementul firewall -ului [17] [18] .

Fără suport pentru roaming IPv6

Mosh 1.2.5 acceptă numai conexiuni IPv6 fixe, nu roaming IPv6 [19] . Acest lucru necesită utilizarea opțiunii de linie de comandă „-6”. Există o versiune experimentală de mosh cu suport pentru multipath IPv6 și comutare dinamică între IPv4 și IPv6 [20] [21] .

Omiterea și derularea terminalului

Mosh nu acceptă istoricul defilării în terminal. Lucrările de implementare au fost programate pentru versiunea 1.3 [22] . O modalitate de a combate acest lucru este utilizarea mosh în combinație cu ecranul multiplexor terminalului sau tmux , care implementează funcționalitatea de defilare a istoricului proprie a terminalului [23] .

Vezi și

Note

  1. Winstein, Keith mosh 1.3.2 lansat . Lista de corespondență (22 iulie 2017). Preluat: 31 iulie 2017.
  2. Mosh 1.3 Release, SSH Alternatives Arhivat 25 octombrie 2018 la Wayback Machine /Opennet, 04/06/2017
  3. „Mosh: the mobile shell” Arhivat 5 august 2016 la Wayback Machine . Preluat la 28 martie 2013.
  4. Brockmeier, Joe. „Into the Mosh Pit: A Mobile Shell Replacement for SSH” Arhivat la 20 martie 2014 la Wayback Machine , linux.com , 10 aprilie 2012. Preluat la 28 martie 2013.
  5. Delony, David. „Mosh: Secure Shell Without the Pain” Arhivat la 5 iulie 2018 la Wayback Machine , Technopedia , 19 octombrie 2012. Preluat la 28 martie 2013.
  6. Cox, John. „Cercetătorii MIT elaborează o nouă abordare pentru protocoalele de internet mobil” Arhivat 18 octombrie 2012. , Network World , 6 iulie 2012. Preluat la 28 martie 2013.
  7. Beckert, Axel. „Mosh și AutoSSH: instrumente shell de la distanță care vă fac viața mai ușoară într-o rețea lentă sau care se transformă constant” Arhivat 21 octombrie 2020 la Wayback Machine , Linux Magazine , noiembrie 2012.
  8. Leyden, John. „MIT’s mind-reading Mosh se confruntă cu demonii SSH” Arhivat la 25 octombrie 2018 la Wayback Machine , The Register , 13 aprilie 2012. Preluat la 28 martie 2013.
  9. Winstein, Keith. „Mosh: An Interactive Remote Shell for Mobile Clients” , USENIX Annual Technical Conference 2012, Boston, Mass., 14 iunie 2012.
  10. „Termius Features” Arhivat 25 octombrie 2018 la Wayback Machine , Crystalnix.
  11. „MIT dezvăluie un nou protocol de internet pentru clienții mobili” . Consultat la 25 octombrie 2018. Arhivat din original la 1 februarie 2016.
  12. Winstein, Keith și Balakrishnan, Hari. „Mosh: An Interactive Remote Shell for Mobile Clients (schiță mai detaliată)” Arhivat 14 martie 2016 la Wayback Machine . Preluat la 28 martie 2013.
  13. Nagaraj, Kanthi și McMilin, Emily. „Mosh” Arhivat 25 octombrie 2018 la Wayback Machine , Reproducing Network Research , 14 martie 2013. Preluat la 28 martie 2013.
  14. Aljunied, Ahmed. „Evaluation of Mosh ‘Mobile Shell’ Performance Results” Arhivat la 26 august 2018 la Wayback Machine , Reproducing Network Research , 13 martie 2013. Preluat la 28 martie 2013.
  15. ↑ „‘Mosh va conecta utilizatorul prin SSH, apoi va începe o conexiune pe un port UDP între 60000 și 61000. ’” Arhivat la 5 august 2016 la Wayback Machine , preluat la 19 iunie 2014.
  16. „Raport de eroare Mosh #285: Can’t use a ProxyCommand-based SSH connection” , Preluat la 18 iunie 2014
  17. „Pericole de deschidere a unei game largi de porturi? (mosh)" Arhivat 2 septembrie 2018 la Wayback Machine , IT Security (Stack Exchange) , 13 aprilie 2012. Preluat la 28 martie 2013.
  18. Multiplexarea mai multor sesiuni în același port UDP
  19. [https://web.archive.org/web/20210701202930/http://mailman.mit.edu/pipermail/mosh-users/2015-July/000283.html Arhivat la 1 iulie 2021 la Wayback Machine [mosh -utilizatori] mosh 1.2.5 lansat]
  20. GitHub - boutier/mosh: versiunea cu mai multe căi a Mobile Shell . Consultat la 25 octombrie 2018. Arhivat din original la 11 iunie 2018.
  21. Matthieu Boutier & Juliusz Chroboczek (2015), UDP multipath în spațiul utilizatorului în Mosh 
  22. https://github.com/keithw/mosh/issues/2 „Suportul pentru derulare înapoi este planificat pentru versiunea 1.3”
  23. „Scrollback și ecran alternativ (a fost: Utilizați ecran alternativ pe smcup/rmcup)”

Link -uri