Mosh, un'alternativa a SSH

SSH, delizia pura

SSH è sempre stata una pura delizia per i sistemisti. Facile da configurare, di scarso impatto sulle prestazioni, estremamente versatile, sufficientemente sicuro, è la chiave di volta per l'accesso e la gestione di server Unix-Like.

Mettendosi in condizioni di non farsi bucare facilmente (password banali, meglio una bella autenticazione a chiave pubblica), la mia filosofia è sempre datemi una shell ssh e vi farò qualsiasi cosa.

In varie occasioni, però, sbucano delle problematiche, specialmente nel mondo odierno:

  • In caso di alta latenza, diventa davvero difficile gestire la situazione vedendo ciò che si digita solo dopo qualche secondo

  • In caso di cambio di connettività (es: failover tra due differenti canali o passaggio da wifi a rete mobile), la sessione si interrompe

  • L'utilizzo del TCP, di ssh, può non essere sempre la scelta più adatta.

Mosh, un'ottima alternativa

Mosh si prefigge l'obiettivo di gestire e risolvere alcune tra queste problematiche e in maniera trasparente al normale utente.

Si pone infatti come applicazione di terminale remoto che supporta, in maniera efficace, connessione intermittente e mostra una copia locale di ciò che viene digitato. In caso di latenza della connessione, dunque, noi vedremo in tempo reale ciò che viene digitato anche se questo non è ancora stato recepito dal server di destinazione.

Vantaggi

Il vantaggio principale è che una sessione, una volta aperta, sarà snella (grazie al buffer locale) e costante (grazie all'utilizzo di UDP). Sarà dunque possibile, come sto facendo io in questo momento, scrivere del testo su un server remoto da una connessione con alta latenza e parzialmente intermittente senza minimamente avere alcun disagio, mentre con ssh ci sarebbe un palpabile disagio a causa delle situazioni che ho elencato.

Uno dei casi in cui Mosh mi ha soddisfatto di più è stato quello in cui si ha una connessione che viene chiusa, dal router o dal gestore, dopo qualche minuto di inattività. Ok, il problema è parzialmente aggirabile tenendo aperta, sul terminale remoto, una sessione di screen o tmux, ma non sempre ciò è fattibile o pratico. Inoltre, in certi casi, si ha un cambiamento di indirizzo IP e in quel caso non c'è nulla che si possa fare.

Mosh è inoltre parte di alcune applicazioni di terze parti (come Juicessh per Android) ed è ormai ben collaudato e testato.

Svantaggi

Non è tutt'oro ciò che luccica. Mosh ha degli svantaggi e non banali.

Uno di essi è la mancanza del port forwarding nativo. D'altronde non nasce per fare da tunnel di connessioni ma per essere un ottimo sistema di terminale remoto.

Un altro svantaggio è l'impossibilità di fare da tunnel per server X. Oggettivamente, nel mio caso, questo non è un gran problema (ho sempre usato poco questo tipo di soluzioni), ma per alcuni può esserlo.

Mosh necessita, inoltre, del suo server in esecuzione (non si appoggia solo a ssh) e, di default, utilizza una porta nel range 60000-61000, per cui almeno alcune di esse andrebbero aperte sul server (una porta per sessione).

Nel complesso, consiglio Mosh? Assolutamente si, prendendo però atto del fatto che non potremo, almeno in tutti i casi, fare a meno dell'ottimo e completo ssh.

Commenti