Mejorando conexiones SSH con MOSH

Secure Shell (SSH) es un componente fundamental para los servidores privados virtuales (VPS) y, en general, la administración de Linux. La capacidad de conectar dos máquinas a través de un canal seguro es invaluable, particularmente cuando se hace apropiadamente con claves públicas.

Pero SSH no es perfecto. Y hay espacio para otras herramientas con objetivos ligeramente diferentes o herramientas que tienen como objetivo impulsar los beneficios clave de SSH aún más. Mosh, el «shell móvil», que, según sus desarrolladores, «permite el roaming, admite conectividad intermitente y proporciona eco local inteligente y edición de línea de las pulsaciones de teclas del usuario».

Mosh está destinado a ser un reemplazo completo de SSH y se enfoca en proporcionar una conexión más sólida, particularmente en conexiones de Internet irregulares.

Que está mal con Mosh?
Digamos que tienes un server en Wakanda al cual necesitas administrar… SSH está bien… Pero seamos honestos, SSH no es elegante en conexiones irregulares. Bueno, a veces SSH es terrible incluso cuando estás usando una Internet extremadamente confiable. Eso se debe a que cuando la conexión entre el cliente y el servidor falla, incluso momentáneamente, puede detenerse por completo, lo que le obliga a eliminarlo y volver a conectarse. Este proceso es molesto una vez, pero después de docenas de repeticiones, es una verdadera molestia y una pesadilla para el tiempo y la productividad.

La latencia de la red conduce a un rendimiento de escritura mediocre. Cuando se escribe en un terminal que ejecuta una conexión SSH, el cliente envía datos sobre cada pulsación de tecla al servidor remoto, que responde de la misma manera. Solo una vez que los datos hayan viajado al servidor y viceversa, su terminal local mostrará los comandos que se escribieron. La latencia inherente en las conexiones de red crea un retraso notable entre que presiona una tecla y la ve en su pantalla. No hay nada de malo en este retraso, pero no crea una experiencia de usuario estelar.

¿Cómo Mosh hace mejor esas cosas?
Usa estados para mayor confiabilidad. Mosh usa lo que llama el Protocolo de sincronización de estado (SSP), que es responsable de sincronizar dos instantáneas del estado actual de la pantalla, una en el servidor y otra en el cliente. Este protocolo basado en UDP tiene como objetivo mostrar al cliente el estado más reciente del lado del servidor y está diseñado para usar datagramas/»latidos» para mantener la conexión, incluso a través del roaming entre puntos de acceso Wifi o entre diferentes direcciones IP.

Un «diseño más conservador» en materia de seguridad. Los desarrolladores de Mosh se apresuran a admitir que las vulnerabilidades agregadas inadvertidamente y descubiertas dentro de OpenSSH/OpenSSL se deben principalmente a la vida útil de décadas de cada una y a lo populares que son. El subtexto es que Mosh podría tener una mejor seguridad únicamente a través de la ofuscación.

Mejoras significativas en la latencia para una mejor productividad en el mundo real. Debido a que SSP sincroniza dos estados en lugar de esperar a que los datos se transfieran de un lado a otro, Mosh puede realizar cambios en la interfaz de usuario mucho más rápido. Según un estudio que completaron, el tiempo medio de respuesta de pulsación de tecla para SSH fue de 503 ms, y de solo 5 ms para Mosh.

¿Hay algo mal con Mosh? Si te preocupa mucho la seguridad, ciertamente sí. Las críticas comunes son tener que abrir algunos puertos UDP y que todavía depende de SSH para crear la conexión inicial. Por supuesto, screen y tmux también se encargan del problema de confiabilidad/persistencia sin abrir nuevos puertos.

Aún así, todo esto se suma a una imagen convincente: puede que Mosh no sea perfecto para todos, pero definitivamente vale la pena probarlo.

Instalación de Mosh

1: Instalación de mosh-server
Al igual que con SSH, Mosh usa una aplicación en el servidor remoto y otra en el cliente local. La instalación en nuestras opciones de sistema operativo (Ubuntu, Debian y CentOS) es muy fácil, solo use el gestorde paquetes para instalar mosh:

2: Instalación del cliente
En el caso del cliente tenemos varias opciones, en el caso de Android tenemos JuicySSH, en el caso de Windows no existe una aplicacion especifica, pero los devs han desarrollado una extensión para Chrome, o para aquellos que se decidan a installar Cygwin (en esta guía solo se hará referencia a la via de Chrome). Para los usuarios linux la instalación es simplemente igual al paso anterior, así que:

2.1: Instalacion del cliente en Chrome de Windows

En realidad algo bien sencillo. hacemos click en el link >>> Chrome <<< e instalamos la aplicación, una vez se termine de instalar se verá algo como:

Si queremos abrirla , basta con acceder a chrome://apps/ desde el propio Chrome:

Y si hacemos click en la aplicación veremos algo como:

3: Configurar el cortafuegos de tu servidor

Los hombres de verdad usan iptables, asi que sencillamente:

No se tienen que abrir los 1000 puertos; Mosh solo necesita 1 puerto abierto por conexión. Si solo necesita algunas conexiones simultáneas, puede abrir muchos menos puertos, como 60000: 60020.

Tenga en cuenta que esta regla de iptables no es persistente, ya que si el servidor se reinicia, la regla desaparecerá. Necesita guardar esta regla. Hay varias formas de hacer esto, incluidas iptables-save e iptables-persistent.

4: La primera conexión

Con todo listo, solo resta probar la conexión, si estamos en un cliente Linux:

Y la conexion quedaría establecida.

4.1 En el caso del cliente de Chrome Windows, se abre la apliación y se ingresan los datos pertinentes:

Una vez demos en Connect se le ingresa la contraseña:

Y ya está dentro de su servidor!!!

4.2 Cliente Android

Como ya se mencionó JuicySSH viene con soporte para conexiones MOSH, simplemente siga los siguientes pasos:

Se abre la aplicación y se va a la sección de Conexiones:

Se crea una nueva conexión yendo al botón de +:

Se configura la conexión:

Y luego simplemente se abre la misma, cuando se abra la conexión:

Y ya está dentro de su servidor.

5: Pensamientos finales

Muchos de nosotros trabajamos remotamente, hemos educado a nuestros jefes a que no necesitamos estar presentes para realizar nuestro trabajo, incluso (y aunque es incómodo) podemos trabajar desde nuestros teléfonos, y muchas veces (…) no tenemos buenas conexiones, esta alternativa ayuda mucho en nuestras labores diarias…

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Autores:

  • Frank Morales
  • Franco Díaz

Agradecimientos especiales: David Cuza AKA(@a_simple_jinetero)

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 4

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*