¿Cómo lograr conexiones SSH persistentes con el MOSH?

0
1008

Si trabaja con varias conexiones inalámbricas (o por cable) dentro de su empresa y tiene que desplazarse por el campus para realizar sus tareas administrativas, es posible que haya ocasiones en las que tenga una conexión SSH y cambie de una red a otro. Cuando eso suceda, su conexión de shell segura se interrumpirá. ¿O quizás su única conexión de red no es siempre la más confiable? Todo está bien si cualquier tarea de administración que esté haciendo no es crítica. ¿Qué sucede cuando estás trabajando en algo importante y esa conexión se rompe?

No quieres eso, por eso deberías emplear una herramienta como MOSH. MOSH son las siglas de Mobile Shell y le permite mantener una conexión SSH persistente, incluso si cambia de red o su conexión se interrumpe momentáneamente.

Aún mejor, el uso de MOSH es casi idéntico al de SSH, al menos desde el punto de vista del usuario. Bajo el capó, MOSH registra al usuario a través de SSH y luego inicia una conexión en un puerto UDP entre 60000 y 61000, para mantener la conexión persistente.

Lo que necesitarás

MOSH está disponible para Linux, macOS, Windows, Android e iOS. Debe instalar el paquete MOSH tanto en el servidor como en el cliente.  Para aquellos que trabajan con MacOS, asegúrese de descargar el instalador binario desde la página de descarga de MOSH . Para aquellos que trabajan con Windows, no hay un paquete nativo, por lo que tendrá que usar MOSH para Chrome .

Cómo instalar MOSH

MOSH se encuentra en mis repositorios estándar de distribución. Para instalar MOSH en distribuciones basadas en Ubuntu, el comando sería:

sudo apt-get install mosh -y

Si está en una distribución de Linux basada en Red Hat, el comando sería:

sudo dnf install mosh -y

Asegúrese de instalar MOSH tanto en su cliente como en su servidor.

Cómo usar MOSH

Por supuesto, esto supone que ya puede SSH desde el cliente al servidor. Siendo ese el caso, puede usar MOSH para hacer esa conexión así:

mosh USER@SERVER

Donde USER es el nombre de usuario remoto y SERVER es la dirección IP o el dominio del servidor.

Si, por alguna razón, necesita usar un puerto UDP diferente, el comando sería:

mosh -p PORT USER@SERVER

Donde PORT es el número de puerto, USER es el nombre de usuario remoto y SERVER es la dirección IP o el dominio del servidor.

Si ha configurado SSH para usar un puerto no estándar en su servidor, tendrá que definirlo dentro del comando MOSH de esta manera:

mosh --ssh="ssh -p PORT" USER@SERVER

Donde PORT es el puerto SSH no estándar en el servidor, USER es el nombre de usuario remoto y SERVER es la dirección IP del servidor. Puede combinar el cambio en los puertos UDP y SSH así:

mosh -p UDP --ssh="ssh -p SSH" USER@SERVER

Donde UDP es el puerto UDP, SSH es el puerto SSH, USER es el nombre de usuario remoto y SERVER es la dirección IP o dominio del servidor.

MOSH también puede usar identidades SSH de la misma manera que se usan en SSH, así:

mosh -i IDENTITY

Donde IDENTITY es el nombre de la identidad que ha configurado en ~/.ssh/config.

Cómo configurar el firewall

El único problema con el que podría encontrarse es si el firewall de su servidor rechaza las conexiones a los puertos necesarios que utilizará MOSH. Esto es fácil de manejar. En un servidor que usa un cortafuegos no complicado (como Ubuntu Server), el comando para abrir esos puertos sería:

sudo ufw allow 60000:61000/udp

Si su servidor usa iptables, el comando sería:

sudo iptables -I INPUT 1 -p udp --dport 60000:61000 -j ACCEPT

Una vez que haya permitido el acceso al puerto, MOSH debería funcionar bien.

Y eso es todo lo que hay que hacer para obtener una conexión SSH más confiable entre su cliente y servidor, con la ayuda de MOSH. Pruebe esta herramienta y vea si encuentra que sus conexiones SSH permanecen conectadas, incluso mientras se desplaza de una red a otra.