Mosh (programvara)
Originalförfattare | Keith Winstein |
---|---|
Initial release | 12 mars 2012 |
Stabil frisättning | 1.4.0 / 26 oktober 2022
|
Förvar | |
Operativ system | Unix-liknande system |
Typ | Verktygsprogramvara |
Licens | GNU GPLv3 med OpenSSL och iOS undantag |
Hemsida |
|
Inom datorer är Mosh (mobilskal) ett verktyg som används för att ansluta från en klientdator till en server över Internet, för att köra en fjärrterminal . Mosh liknar SSH , med ytterligare funktioner som är avsedda att förbättra användbarheten för mobilanvändare . De viktigaste funktionerna är:
- Mosh bibehåller sin session även när den " roamer " (när klientens slutpunkt ändras till olika IP- adresser), till exempel genom att flytta till ett annat Wi-Fi- nätverk eller när man byter från Wi-Fi till 3G .
- Mosh upprätthåller terminalsessionen (inte "anslutning" i TCP-känslan eftersom Mosh använder UDP ) även när en användare tappar sin Internetanslutning eller sätter sin klient i " sömn ". Som jämförelse kan SSH tappa anslutningen i sådana fall eftersom TCP timeout.
- Mosh-klienten försöker vara lyhörd för tangentbordshändelser (att skriva, radera tecken med delete- tangenten och så vidare) utan att vänta på nätverksfördröjning . Den använder ett adaptivt system som förutsäger om applikationen som körs på servern kommer att bestämma sig för att eka användarens tangenttryckningar eller raderingar.
De största nackdelarna med mosh är ytterligare förutsättningar för servern, att den saknar några speciella funktioner i SSH (som vidarebefordran av anslutningar) och avsaknaden av en inbyggd Windows -klient. Ett alternativ för Linux-servrar (som fortfarande kräver installation på servern) är att använda GNU Screen ovanpå en vanlig SSH-anslutning.
Design
Mosh arbetar på ett annat lager än SSH. Medan SSH sänder en ström av bytes i varje riktning (från server till klient eller klient till server) med TCP , kör Mosh en terminalemulator på servern för att ta reda på vad som ska finnas på skärmen. Servern sänder sedan denna skärm till klienten med en varierande bildhastighet, beroende på nätverkets hastighet. Detta gör att Mosh kan spara på nätverkstrafik på långsamma eller intermittenta anslutningar.
Plattformar som stöds
Mosh är tillgänglig för de flesta Linux-distributioner , macOS , FreeBSD , NetBSD och OpenBSD , Android , Solaris , Cygwin och som en Chrome-app . iOS-programmet Termius inkluderar en oberoende implementering av Mosh-protokollet.
Prestanda
Roaming
Mosh bygger på State-Synchronization Protocol (SSP), som stöder enkelpaketsroaming. Efter att klienten har bytt till en ny IP-adress räcker det med ett enda paket som framgångsrikt når servern för att "roama" anslutningen. Klienten behöver inte veta att den har roamat. (Klienten kanske använder NAT och NAT roamed istället.)
Paketförlust
I Mosh research paper testade skaparna SSP på en länk med 29 % paketförlust och fann att SSP minskade den genomsnittliga svarstiden med en faktor 50 (från 16,8 sekunder till 0,33 sekunder) jämfört med SSH, som använder TCP . En annan studie, gjord av studenter vid Stanford University , fann att SSP minskade den genomsnittliga svarstiden med en faktor 30 (från 5,9 sekunder till 0,19 sekunder).
Lokalt eko
Enligt Moshs utvecklare visade sig programmet kunna förutsäga och omedelbart visa 70 % av användarens tangenttryckningar, vilket minskade mediansvarstiden på en tangenttryckning till mindre än 5 millisekunder (maskerar nätverkets latens ) . En annan studie, av studenter vid Stanford University, fann att Mosh snabbt kunde eka 55 % av användarens tangenttryckningar.
Nackdelar
Jämfört med den mer populära SSH har mosh följande nackdelar:
Förutsättningar på servern
Den stora nackdelen med mosh är att den kräver att servern uppfyller ytterligare krav som inte behövs av ssh själv. På grund av dess design behöver mosh servern för att tillåta direkta anslutningar via UDP. Servrar som inte uppfyller dessa förutsättningar kan inte användas av mosh. Exempel på sådana system är servrar bakom brandväggar som begränsar anslutningar till ssh-porten via TCP. Också problematiska är servrar som endast är indirekt tillgängliga. Det senare hanteras vanligtvis av ssh via alternativet 'ProxyCommand', men detta stöds inte av mosh.
En port per anslutning
Som standard försöker servern allokera den första lediga UDP- porten i intervallet 60001–61000, per anslutning. Denna dynamiska portallokering anses vara en extra börda och risk för underhåll av brandväggen. En betydande del av brandväggsfiltreringen sker genom anslutningsspårning, så kallad stateful filtrering , detta är baserat på SYN/ACK-flaggor i TCP -segment, UDP-paket har inte sådana flaggor.
Begränsning:
- UDP-porten på servern kan ställas in per mosh-anslutning, så att endast ett begränsat antal portar behöver öppnas
- Djup paketinspektionsbrandväggar och programbrandväggar kan hantera detta bättre genom att titta på innehållet i paketet och koppla det till den initiala anslutningen
Utdata faller och avsaknad av terminal scrollback
Scrollback stöds inte i den aktuella versionen av mosh, och när den används i en terminalemulator med rullningslister försvinner de, men är planerade för version 1.3. Denna funktion är en avvägning för soprensning, eftersom binär utdata raderas [ förtydligande behövs ] . Ett sätt att mildra detta för närvarande är att använda mosh i kombination med en terminal multiplexer som screen eller tmux .
Brist på ssh-agent forwarding
Vidarebefordran av ssh-agent stöds för närvarande inte.
Brist på X11-vidarebefordran
X11 -vidarebefordran stöds inte ännu.