Mosh
Mosh (Mobile Shell) on kaugterminal, mille abil on Interneti vahendusel võimalik turvaliselt kliendi arvutist serverisse ühendust võtta. Ta on väga sarnane SSH-le, lausa nõuab selle olemasolu, ent tal on lisaomadusi, millega on eriti silmas peetud mobiilset kasutajaskonda. Mosh annab vahetut tagasisidet, võimaldab võrgurändlust ning töötab ka katkeva ühenduse puhul. Ühenduse loomiseks kasutab Mosh vaikimisi esimest vaba UDP porti vahemikus 60000--61000.
Moshi esimene versioon (Mosh 1.0) lasti välja märtsis 2012. Praegune kõige värskem Moshi versioon tuli välja augustis 2016 (Mosh 1.2.6).[1]
Lisaomadused[2]
Vahetu tagasiside
Kui SSH puhul on vaja enne teksti ekraanile kuvamist ära oodata serveri vastus, siis Moshis kuvatakse teksti sisestamine, kustutamine või ridade muutmine koheselt. See toimib tänu Moshi võimele kasutaja tekstisisestusi ette ennustada. Ennustatud tekst, mis pole veel serverilt vastust saanud, kuvatakse allajoonitult (Joonis 1). Pärast serverilt kinnituse saamist jooned eemaldatakse.
Automaatne võrgurändlus
Kui võrguühendus peaks katkema, annab Mosh sellest staatuseribal koheselt teada, näidates viimasest õnnestunud ühendusest möödunud aega (Joonis 1). Kui võrguühendus taastatakse, sünkroniseerib Mosh automaatselt ning kasutajal on võimalik jätkata punktist, kus ta tegevus eelnevalt pooleli jäi ilma, et programmi oleks vaja taaskäivitada. Sama kehtib ka näiteks arvuti puhkerežiimist äratamisel, kui Mosh eelnevalt töötas.
Lisaks suudab Mosh tööd jätkata ka olukordades, kus kliendi IP muutub, näiteks vahetades ühendust WIFI võrgust mobiilsele internetile. Selleks on kasutusel State-Synchronization Protocol (SSP). Võrkude vahetamine ja ühenduse taastamine toimib kliendi jaoks nähtamatult ehk ei eelda kasutaja tegevust. Paketikadu ei teki.
UTF-8 tugi
Moshi loomisel keskenduti ainult ühele kodeeringule – UTF-8 – mis on ka ainuke toetatud kodeering Moshis. Tänu viimistletud UTF-8 kodeeringule, parandab Mosh mitmed Unixi puugid juba olemasolevates terminalides ning SSH-s. Moshis on võimalik probleemideta kuvada ka hieroglüüfe.[3]
Puudused
Nõudmised serverile
Kui SSH on reeglina serveritel juba paidaldatud, siis Moshi kasutamiseks tuleb see paigaldada lisapaketina. Suurem osa administraatoritest reeglina seda ei tee. Lisaks tuleb Moshi kasutades tähelepanu pöörata sellele, et tulemüür oleks seadistatud vastavaid UDP ühendusi lubama.
IPv6 rändlus
Mosh toetab küll IPv6 protokolli, kuid IPv6 ühenduse puhul ei toimi automaatne võrgurändlus.
Terminali kerimine
Hetkel uusim Moshi verisoon ei toeta väljundipuhvri kerimist. See tähendab, et pikema väljundi puhul pole võimalik ülespoole kerida, kui esimesed read aknasse ei mahtunud. Küll aga saab probleemist mööda, kui kasutada virtuaalsete terminalide screen või tmux abi. Lisaks on arendajatel plaanis puudus kõrvaldada Moshi tulevates versioonides.
X11
Mosh ei võimalda kliendi arvutisse üle tuua graafilisi rakendusi serverilt X-i suunamise abil, nagu suudab seda SSH.
Turvalisus
Mosh kasutab serverisse sisselogimisel autentimiseks SSH-d, pärast mida käivitatakse kasutaja jaoks nähtamatult mosh-server[4]
, suletakse SSH ühendus ning käivitatakse mosh-client[5]
. Kuna Mosh on loodud SSH baasil, omandab ta ka selle turvalisuse.
Mõneti on Mosh veelgi turvalisem kui SSH.[6] SSH toetub turvalise andmevoo kandmisel autentimata edastusohje protokollile (Transmission Control Protocol ehk TCP). See tähendab, et ründaja võib sulgeda SSH ühenduse ka andmete krüpteeringut murdmata, sest tal on võimalik välja saata võltssegmente, mis näivad autentsed. Mosh seevastu kontrollib igat datagrammi, mistõttu ei saa ründaja Moshi sessiooni katkestada, kui ta just ei suuda pikema aja jooksul pakettide vahetamist takistada. Lühiajalise ründe korral tekitatakse kasutajale vaid näiline katkestus. Ründe lõppedes Moshi sessioon jätkub.
Viimase nelja aasta jooksul pole Moshil ühtegi turvaauku raporteeritud.[6]
Moshi kasutamine
Vajadusel saab Moshi paigaldada ja kasutada ka ilma ülikasutaja (superuser) õigusi omamata,[7] ent süsteemiüleseks paigaldamiseks on vastavad õigused vajalikud.
Paigaldamine
Moshi kasutamiseks peab see olema paigaldatud nii klient- kui serverjaamal. Mosh on saadaval järgnevatel platvormidel: Linuxi erinevad versioonid, Mac OS X, Android, Solaris, Cygwin, BSD. Lisaks sellele on Mosh olemas ka Chrome rakendusena, mida kasutatakse näiteks Windows operatsioonisüsteemi puhul.
Operatsioonisüsteem | Paigaldamiskäsk[8] |
---|---|
Homebrew (OS X 10.5 or later) | $ brew install mobile-shell
|
MacPorts (OS X 10.5 or later) | $ sudo port install mosh
|
Cygwin (Windows) | C:\> setup.exe -q mobile-shell
|
Alpine Linux | # apk add mosh
|
Arch Linux | # pacman -S mosh
|
Debian (squeeze-backports and later) | $ sudo apt-get install mosh
|
Fedora (14 or later) | $ sudo yum install mosh
|
Gentoo | # emerge net-misc/mosh
|
openSUSE (12.3 or later) | $ sudo zypper in mosh
|
Ubuntu | $ sudo apt-get install mosh
|
FreeBSD | # pkg install net/mosh
|
OpenBSD | # pkg_add mosh
|
NetBSD (pkgsrc) | # cd net/mosh; make install clean
|
OpenCSW (Solaris 10 Update 8 or later) | # pkgutil -i mosh
|
Ühenduse loomine
Windows
Populaarne SSH klient Windowsil, PuTTY, ei sobi Moshi kasutamiseks, kuna sel puudub vastav tugi.
Kõige lihtsama moodusena saab Windowsi peal Moshi kasutada läbi Google Chrome'i laienduse, mida on võimalik alla laadida Chrome'i veebipoest.[9] Pärast rakenduse avamist tuleb loodava ühenduse parameetrid seadistada (Joonis 2). Nii Username kui ka Hostname on ühenduse loomiseks vajalikud.
Moshi kasutamisel läbi Chrome'i peab arvestama, et üks Mosh server command'i parameetritest – kasutuskoht (locale) – on vaikimisi seatud en_US.UTF-8 peale:[10]
mosh-server new -s -c 256 -l LANG=en_US.UTF-8
Kui arvutis, kuhu ühendust võetakse, Moshis seadistatud kasutuskoht puudub, ei saa Moshi kasutada. Seetõttu tuleb kasutuskohta vajadusel muuta. Eesti kasutuskoha puhul peaks Mosh server command olema järgmine:
mosh-server new -s -c 256 -l LANG=et_EE.UTF-8
Alternatiivselt võivad Cygwin-i kasutajad luua ühenduse serveriga nagu tehakse seda Linuxil.
Android
Androididel saab Moshi kasutada läbi JuiceSSH. Nii nagu Chrome'i puhul, on ka JuiceSSH-s kasutuskoht vaikimisi en_US.UTF-8. Joonisel 3 on näidatud JuiceSSH seadistus eesti kasutuskoha puhul.
Linux
Linuxil (ja mitmel teisel operatsioonisüsteemil) saab Moshiga ühenduse luua sarnaselt SSH-le:[11]
$ mosh username@hostname
Kui sama kasutajanimega ollakse juba terminali sisse logitud, pole tarvis enam kasutajanime välja kirjutada. Seega piisab käsust:
$ mosh hostname
Moshi on võimalik kasutada ka severil seda süsteemiüleselt mitte installeerides. Kui mosh-server
ei asu mõnes kaustas, mis on kaasatud $PATH
muutujasse, tuleb programmi asukoht täpsustada:
$ mosh --server=/tmp/mosh-server hostname
Vaikimisi otsib Mosh esimese vaba UDP pordi vahemikus 60000 ja 61000. Et suunata Mosh kasutaja valitud UDP pordile, tuleb see täpsustada (nt 10000):
mosh -p 10000 hostname
Kuna algse ühenduse loomiseks kasutatakse SSH-d, siis võib olla vaja täpsustada erinevaid ssh
käsu parameetreid. Seda saab teha --ssh
võtme abil:
mosh --ssh="~/bin/ssh -p 2222 -i ./identity" hostname
Kui kasutaja soovib vahetu tagasiside keelata, tuleb selleks Moshi käivitamisel lisada võti -n
:
mosh -n hostname
Ühenduse sulgemine
Ühenduse saab sulgeda, nagu ka SSH puhul, kasutades käske exit
või logout
, toimib ka tühjal real ^D
saatmine ehk Ctrl-D
vajutamine. Moshi ühenduse jõuliseks lõpetamiseks on klahvikombinatsioon Ctrl-^ .
(Ctrl-Shift-6
ning seejärel .
). Viimasel juhul lõpetatakse pooleliolevate käskude täitmine, v.a juhuk, kui pole kasutatud virtuaalterminali nagu screen või tmux.
Kuidas abi saada
Täpsemat infot Moshi parameetrite kohta leiab manuaalidest:
või terminalist käskudega:
$ man mosh
$ man mosh-server
$ man mosh-client
Kokkuvõte
Mosh on väga hea tööriist mobiilsetele inimestele, kes peavad tihti katkeva võrguühendusega töötama. Samas ei ole Moshi pakutav lisaväärtus võrreldes SSH-ga piisav, et koguda väga suurt kasutajaskonda, sest enamikel süsteemiadministraatoritel on võrguühendus piisavalt kiire ja stabiilne, et oma tööd SSH-ga jätkata.
Autor
Kristiina Sikkar
AK21
oktoober 2016
Allikad
- ↑ https://mosh.org/#news
- ↑ https://mosh.org/
- ↑ https://mosh.org/#techinfo
- ↑ 4.0 4.1 http://manpages.ubuntu.com/manpages/precise/man1/mosh-server.1.html
- ↑ 5.0 5.1 http://manpages.ubuntu.com/manpages/wily/man1/mosh-client.1.html
- ↑ 6.0 6.1 https://mosh.org/#faq
- ↑ https://gist.github.com/xiaom/8264691
- ↑ https://mosh.org/#getting
- ↑ https://chrome.google.com/webstore/detail/mosh/ooiklbnjmhbcgemelgfhaeaocllobloj
- ↑ https://github.com/rpwoodbu/mosh-chrome/blob/master/mosh_nacl/ssh_login.cc#L44
- ↑ https://mosh.org/#usage
- ↑ http://manpages.ubuntu.com/manpages/precise/man1/mosh.1.html