Mosh - Mobile Shell

Svaki sistem-inženjer neizostavno koristi protokol SSH za spajanje na servere. Klijentski programi za SSH postoje za svaku moguću platformu, pa tako i mobilne platforme (za Android smo već opisali JuiceSSH). Sve dok je mreža na koju smo spojeni dovoljno kvalitetna (bilo Wifi bilo 3G/4G), rad ide bez problema. No, što ako je mreža spora ili ima prekida? Za to imamo rješenje, a zove se MOSH.

MOSH (MObile SHell) je razvijen na čuvenom MIT-u, što već unaprijed daje ovom softveru na težini. O čemu se zapravo radi?

Mosh je zamišljen kao zamjena klasičnom SSH-u, s ciljem da na mobilnim platformama (gdje se prebacujemo sa spojne točke na spojnu točku) ili na sporim vezama pruži bolje korisničko iskustvo. Ovo čini na više načina, primjerice korištenjem UDP protokola (umjesto sporijeg i "težeg" TCP-a), lokalnim editiranjem komandne linije (umjesto čekanja na odgovor udaljenog servera) i otpornošću na prekide linka (oporavak iste sesije) - drugim riječima podržava roaming.

Kod uporabe, tekst koji kucate prikazuje se odmah, ne čeka se odgovor servera. Ukoliko ste SSH nekad koristili preko sporog modema, znate koliko frustrira čekanje na odziv servera. Kod bežičnog Interneta preko 3G i 4G mreža, problem možda neće biti čista brzina, nego latencija, što podjednako iritira.

Mosh pod sobom ima vlastiti protokol SSP - State Synchronizationj Protocol. Kako radi preko UDP-a, roaming je vrlo jednostavno omogućiti. SSP se može primijeniti i za druge programe, a pogodan je baš za mobilne aplikacije jer omogućava roaming kod prelaska s kućne mreže na GSM mrežu bez prekida prijenosa podataka koji je u tijeku.

Za sigurnost se brine AES-OCB, a razmjena ključeva se obavlja out-of-band (ide posebnim komunikacijskim kanalom). 

MOSH ima prediktivni lokalni prikaz karaktera - klijent predviđa što će server poslati. Ukoliko je predviđanje pogrešno, nema problema, predviđanje se poništava i dalje se nastavlja po starom. Autori tvrde da je čak 70% predviđanja točno. Ukoliko ne želite koristiti ovu funkciju, mosh pokrenite ovako:

$ mosh --predict=never korisnik@server

Kako izgleda to predviđanje? Jednostavno, prilikom kucanja vidjet ćete da je tekst podcrtan. Ukoliko je predviđanje točno, crta će nestati i znakovi koje ste otkucali bit će prihvaćeni. Ukoliko predviđenje nije točno, karakteri će biti prebrisani slično kao kada uključite overtype unutar nekog uredskog paketa, odnosno uređivača teksta. Ilustrirat ćemo to animiranim gifom:

protokol MOSH

Ukoliko dođe do kraćeg prekida veze (kod prelaska na drugu baznu stanicu ili slično), vaša SSH sesija će se zamrznuti. Nećete više moći unijeti nijedan karakter, a SSH vam neće ništa javiti. Možete ugasiti prozor ili prekinuti SSH sesiju sa nizom znakova "~." (sličnu mogućnost izlaska u naredbeni način rada je imao program telnet sa svojim čuvenim Ctrl+]).

Mosh će vam, za razliku od SSH-a, ispisati točno koliko vremena nije primio odziv od servera. Sve će to ispisati u gornjem retku ekrana, tako da je nemoguće promašiti ovu poruku. U slučaju da se nastavak rada iz nekog razloga ne može uspostaviti, iz mosh sesije izlazite sa nizom znakova "Ctrl-^ .". Ni ovu kombinaciju znakova nećete zaboraviti, jer je ispisana u navedenom retku na ekranu.

 

Ovo u principu nećete morati koristiti, osim da je nekako cijeli SSH prekinuo rad (ugašen je daemon ili je server restartan). Ovu kombinaciju znakova, ipak, možete korisiti za sasvim regularan izlaz iz shella udaljenog servera, ukoliko vam je iz nekog razloga to brže nego otkucati "exit".

Mosh podržava i pozadinski način rada, točnije bez problema može biti stavljen u pozadinu i vraćen. Ovu mogućnost možete koristiti ukoliko imate potrebu da na lokalnom računalu nešto napravite. Ne morate se više odjavljivati s udaljenog servera, nego jednostavno prebacite mosh u pozadinu s kombinacijom tipki "Ctrl-^ Ctrl-Z". Obavite što imate i vratite mosh u prednji plan sa standardnim "fg".

Mosh u potpunosti podržava UTF-8, zapravo je to jedina kodna stranica koju podržava. Ukoliko imate podešen shell s našim znakovima po UTF-8 standardu, nećete imati problema pri spajanu na udaljene servere.

Mosh se vrti u userspaceu i ne traži posebne privilegije, odnosno ne "vrti se pod rootom", pa nema problema s pretjeranim ovlastima, što je uvijek potencijalni izvor sigurnosnih problema. Ova činjenica je vrlo važna za ovakav servis, koji je obično širom otvoren prema svijetu.

Logiranje se obavlja preko SSH (dakle, autentikacija ide kako ste i navikli), a tek nakon prijave pokreće se proces mosh-server.

Mosh podržava IPv6 tek od verzije 1.2.5 (u Debianu Wheezy je 1.2.3, a u Jessie 1.2.4a), pa to imajte na umu ako rabite IPv6 u produkciji. Ukoliko koristite IPv6, ili ste na mjestu gdje ga koriste pa nemate izbora, možete forsirati IPv4 tako da navedete IPv4 adresu umjesto naziva servera. Na taj način preskočit ćete DNS koji može vratiti IPv6 adresu, na koju se mosh-server ne može spojiti.

Mosh ne omogućava scrolling (scrollback history). Ukoliko vam je ta funkcionalnost bitna, koristite ga u kombinaciji s nekim screen multiplekserom, poput screena i tmuxa. Autori obećavaju podršku za scrollback buffer u budućnosti.

Ovo je bio kraći pregled mogućnosti MOSH-a koji bi vas trebao zainteresirati da ga isprobate. Za fine i najčešće dosadne detalje (što amerikanci zgodno nazivaju "gory details"), provjerite informacije dostupne na adresi http://mosh.mit.edu/

Kategorije: 
Vote: 
0
No votes yet