Mosh Shell – Un cliente SSH para conexión remota sin cortes

Mosh laptop air apple

Los administradores de sistemas trabajamos en condiciones especiales con mala conectividad, ya sea por el cuestiones temporales o por cuestiones de calidad, y perder de forma constante nuestra conexión  al shell que estamos conectados es un pequeño desastre, que muchos suplimos con el uso de multiplexadores como el comando screen. Sin embargo, el uso combinado con Mosh puede ser una delicia para nuestro trabajo.

Mosh

Mosh, el acrónimo de Mobile Shell, es una aplicación (en linea de comandos) que es usada para conectarse a un servidor desde un ordenador o dispositivo cliente, a traves de la red. Puede usarse como SSH y contiene algunas características adicionales al SSH. Es una aplicación escrita por Keith Winstein, para sistemas UNIX, bajo licencia GNU GPL v3.

Características de Mosh

  • Es una aplicación de terminal remoto que admite roaming.
  • Mecanismo para manejar la pérdida de paquetes.
  • Recuperación de cortes de red continuados.
  • Disponible para todos los principales sistemas operativos de tipo UNIX, Linux, FreeBSD, Solaris, Mac OS X y Android.
  • Proporciona ecos locales inteligentes.
  • Se admite la edición de atajos de teclado.
  • Diseño adaptado y robusto a través de enlaces wifi, celulares y de larga distancia.
  • Permanece conectado incluso cuando IP cambia (como por ejemplo operadores de 3G/4G con red deficitaria). Utiliza UDP en lugar de TCP (utilizado por SSH). TCP time out cuando se restablece la conexión o se asigna una nueva IP, pero UDP mantiene abierta la conexión.
  • La conexión permanece intacta al reanudar la sesión después de un tiempo prolongado.
  • No hay retraso en la red. Muestra las secuencias tecleadas tras un corte inmediatamente después de recuperar la conexión.
  • El mismo método de inicio de sesión como en SSH.

Instalación de Mosh Shell en Linux

Dependiendo de nuestra distirbución usaremos el gestor de paquetes adecuado, y en algunos casos puede que necesitemos instalar un repositorio especial. Pero lo que si es cierto es que necesitamos instalarlo en ambos elementos de la conexión, el servidor y el cliente.

Debian/Ubuntu/Mint

Alternativa en Ubuntu

RHEL/CentOs/Fedora

Para estas distribuciones necesitaremos instalar un repositorio especial llamado EPEL, (ver nuestro artículo para instalar EPEL en WHM/Cpanel con centos si usas WH/Cpanel)

Firewall

Para trabajar Mosh requiere para su trabajo los puertos UDP desde el 60000 hasta el 61000, pues es a través de es nivel de transporte, donde se realiza el trabajo para permitir que las conexiones permanezcan intactas, y pueda reconectarse tras una perdida de conexión, SSH a través del protocolo TCP.

En mi caso que uso CSF Config Firewall solo tengo que editar la linea UDP_IN para añadir 60000:61000 y hacer un csf -ra

De modo manual (no CSF) sería algo así:

Como usar Mosh Shell

Si se hace un uso normal (puerto original, sin opciones de ssh)

Si necesitamos pasar parametros sería algo asi:

Una vez conectado, Mosh nos mostrar un shell como el de una conexión SSH. Sin embargo debajo de esta fachada, hay mucho más. Una tubería que añade una serie de características que permitirán que en condiciones de mala calidad de la conexión podamos trabajar de forma continuada.

El modo de funcionamiento además, a través del modo vt500, ahorrará ancho de banda, pues los cambios en pantalla solo se notificarán para el area visible. Ademas, el nos indicará cuando hay una perdida de conectividad, y nos anunciará cuando la reconexión es alcanzada nuevamente. Una vez se alcance la condición, Mosh actualizará aquello que ya escribimos.

Aun así, yo sigo usando screen como multiplexor, sobre todo en operaciones sensibles como lo son las actualizaciones de sistemas, edición de ficheros de configuración o contraseñas, etc.


Imagen Designed by Freepik y montada por Abdelkarim Mateos

Comparte este artículo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax