We kenden mosh al een tijdje, maar omdat één van onze lezers ons er vorige week op attent maakte als alternatief voor autossh bij interactieve ssh-sessies namen we er eindelijk eens een kijkje naar. Het programma heeft namelijk enkele interessante voordelen ten opzichte van ssh voor mobiele gebruikers.

De hele tijd aangemeld

De belangrijkste is dat je verbonden blijft, zelfs als je van ip-adres verandert. Bijvoorbeeld als je van WiFi naar Ethernet of 3G overschakelt. Ssh maar ook heel wat webapplicaties verliezen in die situaties hun verbinding, maar met mosh blijf je de hele tijd aangemeld. En zelfs wanneer je internetverbinding uitvalt of je je laptop in slaapstand zet en daarna weer wekt, blijft je sessie intact.

Mosh werkt bovendien vlotter op netwerken met grote vertragingen, zoals 3G-netwerken. Terwijl je in een ssh-verbinding pas je eigen ingetypte commando's te zien krijgt na de reactie van de server (wat op een traag netwerk irritant lang kan duren), reageert de interface van mosh onmiddellijk.

In plaats van een byte-stream van de server op de client te interpreteren, zoals dat bij ssh en telnet gebeurt, hebben de server en client bij mosh immers beiden een snapshot van het scherm, en synchroniseren ze deze via het State Synchronization Protocol (SSP), dat over udp gestuurd wordt en versleuteld en geauthenticeerd wordt.

Aan de slag

Hoe gebruik je mosh? Daarvoor moet je het programma uiteraard zowel op de client als op de server hebben draaien, maar mosh draait op de server niet als daemon. Het aanmelden zelf verloopt immers via ssh: de mosh-client meldt je (met een wachtwoord of publieke sleutel) aan op de ssh-server, waarna op de server de mosh-server opgestart wordt en een udp-verbinding tussen de mosh-client en mosh-server geopend wordt.

De client en server draaien dus beide met de permissies van je reguliere gebruiker zonder privileges. Als je mosh op de server niet op zijn normale plaats kunt installeren, dan plaats je deze in je home-directory en geef je het pad bij het aanroepen van de mosh-client aan met de optie --server:

$ mosh --server=/home/gebruiker/bin/mosh-server [email protected]

Ssh-opties kun je ook opgeven, bijvoorbeeld:

$ mosh --ssh="ssh -p 2222 -i ~/.ssh/irc_rsa" [email protected]

Een mosh-sessie afsluiten kan met logout of exit of met Ctrl-^ . als je dit wil forceren.

Nog meer in de pijplijn

Voor interactieve sessies biedt mosh zoals gezien heel wat voordelen ten opzichte van ssh. Voor andere functionaliteit zoals ssh-tunnels, X forwarding en ssh agents biedt mosh echter nog geen alternatief, al staan vele hiervan wel op de roadmap. De ontwikkelaars zijn ook bezig aan een Android-client en zelfs roaming tussen IPv4 en IPv6 staat op het programma. Meer informatie over de werking van mosh vind je in de man-pagina's van mosh, mosh-client en mosh-server.