Hace ya algún tiempo que escuché sobre el proyecto mosh, sin embargo, entonces no le ví la necesidad, porque tampoco me conectaba de manera asidua vía ssh. Lo cierto es que solo lo hacía con el servidor de casa, y vía WiFi, con lo que la conexión en rara ocasión se perdía. Pero, recientemente, las circunstancias han cambiado, gracias a la Raspberry, tengo una OpenVPN que me permite conectarme a la red local desde el exterior. Esto me ha llevado a sufrir con ssh, perder alguna sesión o ver como trabajar se hacía casi imposible. La solución la encontré de la mano de Mosh, un ssh móvil.
Lo cierto es que no solo Raspberry, ha hecho que cambie mi percepción de las conexiones vía SSH. Termux, que es un emulador de terminal para Android, realmente potente, hace que ahora pase mas tiempo trabajando vía ssh
Pero, ¿que es Mosh o el ssh móvil?.
Mosh, el ssh móvil
Depende de donde esté, del tipo de conexión que tenga, y de otras circunstancias, comunicarme con la Raspberry Pi, a través de ssh, puede ser todo un incordio. Puede ser que estés escribiendo una orden en la terminal, y las letras aparecen cuando les viene en gana. Intentas detener un proceso, y no haya manera de que el terminal te responda. La conexión se interrumpe en el momento mas inoportuno, y pierdes lo que estabas haciendo. Otro problema que seguro te habrá pasado es tener que reiniciar la conexión después de haber suspendido el ordenador.
Si eres un usuario habitual de ssh estoy seguro de sabes a que me refiero. En ese caso, y si no conoces Mosh, te puedo asegurar que esa es la solución o por lo menos un importante paliativo para tu problema.
¿Que es Mosh?
Según la definición de los propios desarrolladores de Miosh se trata de unaterminal remoto que permite roaming, soporta conectividad intermintente y proporciona eco local inteligente .
Mosh funciona sobre ssh, sin embargo, para conectarte solo tienes que ejecutar mosh, aunque es necesario que también esté instalado en el servidor. Es un sistema mas robusto que trabajar directamente sobre ssh, especialmente sobre WiFi y red móvil.
Otra de las grandes ventajas de esta aplicación es que es multiplataforma. Lo puedes encontrar en casi cualquier sitio, Linux, Android, macOS, Chrome, iOS.
Ventajas e inconvenientes de Mosh
A continuación puedes ver algunas de las ventajas de Mosh que lo hacen tan recomendable. Cuando lo leas, si estás en alguna de estas situaciones, seguro que te decidirás a dar el salto,
- Aunque tu conexión IP cambie tu sesión no termina sigues conectado. Esto es así, porque Mosh permite moverte entre conexiones y mantener la sesión en funcionamiento. Aunque la IP cambie no necesitas volver a conectarte.
- Mantiene la sesión aunque se pierda la conexión. Seguro que te ha sucedido en alguna ocasión que has perdido la conexión WiFi, 3G ó 4G, en ese momento, tu sesión se cierra. Esto con Mosh no sucede, porque la sesión no se cierra.
- Mosh utiliza los mismos credenciales que SSH. Con lo que te puedes conectar exactamente igual que lo haces con ssh.
- Igualmente, seguro que en alguna ocasión has pedido mostrar desde la terminal remota un archivo de texto de gran tamaño. Si la conexión es lenta, parece que nunca va a terminar, y aunque pulses
Control+C
, el sistema no te responde. Esto con Mosh no sucede, en el momento que lo pulses, se detendrá de inmediato. - En conexiones lentas Mosh es la solución. Dado que cada tecla que pulsas tiene que aparecer en el terminal remoto y devolver el eco a nuestro terminal, si la conexión es deficiente, te parecerá que estás escribiendo en cámara lenta. Esto con Mosh, no sucede, conforme escribes en tu terminal, aparecerá en pantalla, y ya se transmitirá al terminal remoto.
Pero no todo son ventajas, Mosh tiene inconvenientes, que aunque actualmente no son un problema para la mayoría de nosotros, pueden llegar a serlo,
- Mosh no tiene soporte para IPv6.
- Solo soporta codificación UTF-8.
Instalación
Mosh, tu ssh móvil, está disponible en Debian, Ubuntu, Linux Mint y derivados, por lo que lo puedes instalar fácilmente, haciendo clic en Mosh. Si lo quieres instalar desde el terminal, ejecuta la orden,
sudo apt install mosh
Recordarte que debes instalar Mosh, tanto en el servidor como en el cliente, aunque no necesitas iniciarlo en el servidor.
Por último indicarte que no solo está disponible en la mayoría de las distribuciones Linux, sino que es multiplataforma. Lo tienes disponible en macOS, Windows, Chrome, iOs y en Android, gracias a Termux.
Uso y funcionamiento
Una vez instalado, hacerlo funcionar es igual de sencillo que iniciar una conexión vía ssh. Por ejemplo, para conectarte a una Raspberry Pi en tu red, tan solo tienes que ejecutar la orden,
mosh pi@192.168.1.48
O si tienes configurada la conexión vía ssh, tal y como indiqué en el artículo, sobre Configuración de ssh, solo tendrás que ejecutar la orden,
mosh rpi
Conclusiones
Sea que tu trabajas con una conexión deficiente, o sueles cambiar de conexión, o por cualquier otra razón, por la que hayas experimentado cortes en tu conexión, Mosh es la solución para tener un ssh móvil.
Sinceramente, te recomiendo que como mínimo lo pruebes, para convencerte tu mismo, de que esa es la solución que andabas buscando para resolver ese problema que tenías.
Por último, tengo que dar las gracias a Rodolfo, el conductor del podcast Deployando.me, que es el que me recordó la existencia de Mosh. Te recomiendo que escuches su podcast, y en particular el capítulo 20 – mosh, donde explica de una forma sencilla, clara y objetiva el funcionamiento y uso de mosh. Totalmente recomendable.
Más información,
Yo hasta ahora usaba screen ( https://linux.die.net/man/1/screen ) para evitar que se me cerrara la sesión si había un corte en la comunicación, pero probaré mosh. Tiene buena pinta. Gracias.
Yo voy haré lo contrario, voy a probar screen, que hasta la fecha no he utilizado nunca.
Muchas gracias Joaquin. Un saludo.
Por si te sirve, casi todo lo que sé de cómo usar screen lo aprendí aquí: https://tuxpepino.wordpress.com/2007/05/24/%c2%bfconocias-screen/#more-167 . Un vez me acostumbré a los atajos de teclado de screen no puedo dejar de usarlo, para, por ejemplo, actualizar servidores en remoto sin miedo a que se me corte la sesión por una caída de la red, dejar corriendo programas en segundo plano, compartir la misma consola entre varias personas cada una interactuando desde su propio ordenador, etc…. La ventaja que le veo sobre Mosh es que sólo necesitas que lo tenga instalado el servidor para poder usarlo desde cualquier dispositivo desde el que puedas iniciar una sesión por SSH.
OK! Perfecto, lo probaré cuanto antes.
Muchas gracias.