Para iniciar sesión en un sistema remoto, solíamos usar telnet. Debido a las graves vulnerabilidades de seguridad de telnet, se reemplazó por ssh .
SSH permite a los usuarios iniciar sesión en sistemas remotos con/sin contraseña, pero con la ayuda de una clave privada y una clave pública. La principal ventaja de SSH es su encriptación. Permite que el usuario se comunique con el sistema remoto sin temor a escuchas o manipulaciones.
Las deficiencias de SSH
Para poner en funcionamiento de ssh en términos simples, es una conexión TCP de paquetes encriptados.
SSH envía los paquetes entre el sistema local y el remoto como telnet pero el contenido del paquete está encriptado. No hay almacenamiento en búfer ni procesamiento en el medio. Incluso los caracteres que escribe se envían al sistema remoto y luego el sistema remoto envía su respuesta (que contiene el carácter escrito para que se muestre en la pantalla) al sistema local.
¿Puedes ver todo ese viaje de ida y vuelta para ver un solo carácter que escribiste?
“””Simplemente envía/recibe paquetes cifrados “””
Pero qué sucede cuando la red está desconectada o es muy lenta. La conexión TCP se romperá y el sistema local quedará colgado en el aire sin ningún error. No es el típico sistema Linux congelado, solo una terminal congelada con la conexión SSH desconectada.
Es posible que haya sentido frustración con ssh en una de las siguientes situaciones.
- Su conexión de red está desconectada. Su sesión ssh no mostrará nada. Cuando escriba en el shell, notará que no pasa nada. Y luego comprobará el icono de Internet/Wi-Fi.
- Cuando tenga una conexión a Internet lenta, se presentará la misma situación. Los caracteres que escriba en el sistema local pueden aparecer después de segundos o, en el peor de los casos, incluso minutos.
- Cuando está inactivo durante un período prolongado, a veces SSH deja de funcionar aunque su computadora no esté inactiva y la conexión de red esté activa.
En resumen, SSH proporcionó una gran seguridad pero poca usabilidad en conexiones de alta latencia. Puede usar el comando nohup en Linux para continuar ejecutando los comandos incluso después de que se interrumpa la conexión SSH, pero en realidad no es una buena solución. ¿Sabes qué es mejor? Mosh!
Mosh:SSH sin problemas de conectividad
Mosh significa MObile SHell . Da una solución simple a todos los problemas mencionados anteriormente. Utiliza una técnica similar al almacenamiento en búfer y la sincronización de elementos (objetos) mediante el protocolo SSP (protocolo de sincronización de estado). Y para transmitir paquetes, utiliza UDP, que es un protocolo sin conexión.
Para saber cómo funciona mosh, lee su página oficial.
Para evitar reinventar la rueda, mosh usa ssh para la autenticación. Por lo tanto, no necesita crear nuevos pares de claves o usuarios y similares. Así que todas las ventajas de seguridad que ssh tiene también está con mosh . También implica que debe tener una configuración de SSH que funcione tanto en el sistema local como en el remoto.
Instalar mosh en Ubuntu y otras distribuciones de Linux
Si no tiene ssh instalado y configurado, aprenda los conceptos básicos de SSH y habilite SSH en Ubuntu o cualquier Linux que esté usando.
Después de asegurarse de que tiene una configuración de SSH que funcione, instalar mosh es una tarea sencilla. El paquete que necesita instalar es el mismo tanto en el sistema local como en el remoto.
Para instalar mosh en distribuciones de Linux basadas en Ubuntu o Debian, puede usar los siguientes comandos, uno por uno:
sudo apt update
sudo apt install mosh
Mosh está disponible en todas las principales distribuciones de Linux. Usa el administrador de paquetes de tu distribución para instalarlo.
Una vez que haya terminado de instalar mosh, todo estará listo en el lado del cliente/local. En el lado remoto (es decir, el servidor), debe realizar una configuración simple.
Configurando mosh en servidor remoto
Recuerda la parte que dije mosh usa UDP? Por defecto, mosh usa los puertos UDP 60000-61000. Entonces, si tiene un firewall en el sistema remoto, debe volver a escribir la regla de firewall para esos puertos de la siguiente manera. uf es el administrador del cortafuegos.
sudo ufw allow 60000:61000/udp
Conectémonos a través de mosh
A partir de ahora, tenemos un SSH en funcionamiento, mosh que está instalado en ambos sistemas y una regla de firewall que permite el tráfico UDP en los puertos 60K-61K en el servidor remoto.
Para usar mosh, es tan simple como se muestra a continuación
mosh [email protected]
¡Sí! Lo sé. Es así de simple como ssh.
Pero, ¿qué pasa si necesito especificar el puerto ssh que no sea el puerto predeterminado o usar opciones específicas de ssh? mosh te tiene cubierto. Solo necesita pasar la "opción ssh [argumento] ” a la opción –ssh .
Por ejemplo, necesito conectarme a ssh ejecutándose en el puerto 2222 en el servidor remoto. Se puede hacer de la siguiente manera.
mosh [email protected] --ssh="ssh -p 2222"
Eso es todo, los sistemas están conectados. Ahora, para darse cuenta del poder de mosh, intente apagar y encender su conexión de red. Puedes ver que mosh sigue funcionando. ¡Qué genial es eso!
Espero que les haya gustado este tutorial sobre Mosh. Desde que descubrí Mosh, dejé de usar ssh para conectarme a servidores remotos. ¿Y usted? ¿Te gustó Mosh o aún prefieres SSH? Comparta sus puntos de vista.