Svaki sistem-inženjer u svom radu neizostavno mora koristiti protokol SSH za spajanje na server. 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 (Massachusetts Institute of Technology), š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 (ili na sporim vezama) pruži bolje korisničko iskustvo. Ovo čini na više načina, a to je korištenjem UDP protokola (umjesto sporijeg i "težeg" TCP-a), lokalnim editiranjem komandne linije (umjesto čekanja na odgovor udaljenog servera) i otpornost na prekide linka (oporavak iste sesije) - drugim riječima podržava roaming.
Kod uporabe mosh klijenta, tekst koji kucate prikazuje se odmah, a ne čeka se odgovor servera. Ukoliko ste SSH nekad koristili preko sporog modema, znate koliko to može biti frustrirajuće. Kod Interneta preko 3G i 4G mreža problem možda neće biti čista brzina, nego latencija, što je podjednako iritirajuće u radu.
Tradicionalni SSH
Prikaz lokalno otkucanih znakova, bez čekanja da server potvrdi da je te znakove primio, je moguć zbog implementacije prediktivnog prikaza znakova. Drugim riječima, klijent predviđa što će server poslati. Ukoliko je predviđanje pogrešno, nema problema, poništava se i dalje se nastavlja po starom. Pokazalo se da je oko 70% predviđanja točno, što ovisi o tome kako koristite komandnu liniju.
Ne tako tradicionalni MOSH
Mosh pod sobom ima vlastiti protokol SSP - State Synchronization Protocol. Kako SSP radi preko UDP-a, vrlo je jednostavno omogućiti roaming. SSP je moguće primijeniti i za druge programe, a pogodan je baš za mobilne aplikacije, jer omogućava roaming s kućne mreže na GSM mrežu bez prekida prijenosa podataka koji je u tijeku.
Za sigurnost se brine AES-OCB (Offset Codebook Mode) koji je, čini se, odabran jer nudi privatnost i provjerljivost, uz relativno mali overhead kada se usporedi tradicionalnim enkripcijskim metodama. Više o tome na Wikipediji: https://en.wikipedia.org/wiki/OCB_mode.
Mosh podržava UTF-8 (u principu to je i jedini charset koji podržava, no danas je to ionako standard). Izvršava se u userspace-u, dakle proces nije privilegiran, pa nema problema ukoliko bi se pojavio kakav sigurnosni propust (barem ne sa pretjeranim ovlastima). Prijava ide preko SSH mehanizama, ali odmah nakon prijave pokreće se mosh-server koji preuzima daljnju komunikaciju. Za ovu komunikaciju koristi portove 60000-61000, pa oni moraju biti otvoreni, što se vašem vatrozidu možda "neće svidjeti".
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. 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.
Mana Mosh-a je nepodržavanje scrolling-a (scrollback history), pa ukoliko vam je ta funkcionalnost bitna, koristite ga u kombinaciji sa screenom i tmuxom. Autori obećavaju podršku za scrollback buffer u budućnosti.
Više informacija može se pronaći na ovom linku: http://mosh.mit.edu/
U drugom nastavku vidjet ćemo mosh u radu, kao i koji klijenti su dostupni za Android, Linux i Windows platforme.