Saltar al contenido

Cómo mantener las sesiones SSH remotas ejecutándose después de la desconexión

Cómo mantener las sesiones SSH remotas ejecutándose después de la desconexión

SSH (Secure Shell) es el sistema de red cifrado de extremo a extremo que permite a los usuarios obtener acceso de forma remota desde el cliente al servidor o sistema. Debido a su sistema de seguridad de criptografía asimétrica, es bastante seguro acceder al servidor incluso desde una red de clientes insegura. Pero a veces debido a la inactividad o la mala señal de red, el acceso remoto SSH puede desconectarse. Cualquiera sea la razón, como administrador de Linux, es un trabajo vital mantener las sesiones SSH y los procesos en ejecución después de la desconexión.

Razones por las cuales las sesiones SSH se desconectan


En pocas palabras, el error de proxy del túnel SSH, el tiempo de espera de la red, el uso del puerto de red incorrecto o incluso el no haber iniciado sesión en su sistema como usuario root también pueden desconectarlo de la administración remota SSH. En esta publicación, vamos a discutir la pregunta más frecuente sobre SSH; cómo mantener las sesiones SSH y los procesos en ejecución después de la desconexión.

1. Siga ejecutando sesiones SSH con el comando de pantalla


El comando de pantalla es el comando más utilizado y útil para la administración de SSH. El comando de pantalla puede resolver problemas de nombre de host para direcciones IPv4 e IPv6. Con las funciones de root, el comando de pantalla puede cerrar sesión o cerrar una sesión desde el extremo del cliente al extremo del servidor. Si eres un novato en Linux SSH, aquí hay algunas CLI que pueden ayudarte a instalar y encontrar manuales del comando de pantalla.

Para Ubuntu:

$ sudo apt install screen

Para OpenSUSE:

$ sudo zypper install screen

Para Arch Linux:

$ sudo pacman -S screen

Para Red Hat Enterprise Linux:

$ sudo yum install screen

Una vez que haya terminado de instalar, comience a monitorear la pantalla de inicio de su sistema.

$ screen
$ screen --help

pantalla de Razones por las cuales las conexiones SSH se desconectan

Una vez que tenga el acceso, SSH en el servidor, desea obtener acceso de forma remota. Si está planeando un trabajo nocturno prolongado desde su estación, pero no desea desactivar su cliente SSH, puede usar el comando de pantalla. Esto puede separar su sesión de pantalla, pero no se preocupe, las tareas que inició se completarán.

Para separar su pantalla presione Ctrl-A y luego Ctrl-D desde su teclado. Puede iniciar sesión para monitorear el progreso del trabajo en cualquier momento desde su terminal. Para volver a conectarse o conectarse con el existente con la sesión, use la siguiente CLI.

$ screen -r
screen -D -r

2. Siga ejecutando sesiones SSH con la herramienta tmux


El tmux o terminal multiplexor es una herramienta muy popular y útil para programadores y administradores de sistemas que permite a los usuarios cambiar de un programa a otro en el mismo terminal. Para mantener las sesiones SSH ejecutándose en segundo plano, tmux puede ser una solución muy rápida. Puede separar y volver a conectar aplicaciones donde los procesos se mantienen ejecutándose en segundo plano. Aquí están las instrucciones de instalación de tmux para distribuciones de Linux.

Para Arch Linux:

$ sudo pacman -S tmux

Para Red Hat Enterprise Linux:

$ sudo yum install tmux

Para Ubuntu:

$ sudo apt-get install tmux

Para OpenSUSE:

$ sudo zypper install tmux

Después de instalar tmux, inicie la sesión de tmux usando comandos de terminal. No llevará mucho tiempo instalarlo. Una vez que haya terminado de instalar, ahora puede comenzar con tmux. Para iniciar tmux, simplemente escriba tmux en la terminal.

$ tmux

Tutorial básico de tmux: Windows, paneles y sesiones sobre SSH

Si necesita ejecutar más de un multiplexor de terminal para mantener todas las sesiones SSH ejecutándose en segundo plano, en ese caso, puede encontrar dificultades para cambiar entre tmux a tmux. Aquí están las líneas de comando para cambiar de una forma a otra.

$ tmux detach
$ tmux attach
$ tmux attach -t 2

Para verificar toda la pantalla tmux, use el comando tmux list.

$ tmux ls

3. Siga ejecutando sesiones SSH con la herramienta byobu


La herramienta byobu se usa principalmente para la administración remota de SSH y el monitoreo en pantalla en Linux. Es un software de fuente abierta y se puede usar junto con tmux o la herramienta de pantalla. Puede ver el estado actual, las notificaciones y los mensajes con la herramienta byobu. Aunque el byobu viene instalado por defecto con Ubuntu. Pero si no es así, puede instalarlo dentro de su máquina Linux. Para verificar si byobu está instalado o no en su sistema, verifique las otras versiones de byobu.

$ byobu --version

Luego habilite byobu, ayudará a mantener sus sesiones SSH ejecutándose en segundo plano incluso después de la desconexión.

$ byobu-enable

byobu ssh desconecte Linux después de ejecutar

Aquí los procesos de instalación se explican con CLI.

Para Ubuntu:

$ sudo apt install byobu

Para OpenSUSE:

$ sudo zypper addrepo https://download.opensuse.org/repositories/utilities/openSUSE_Leap_42.3/utilities.repo
$ sudo zypper refresh
$ sudo zypper install byobu

Para Arch Linux:

$ yaourt -S byobu
$ packer -S byobu

Para Red Hat Enterprise Linux:

$ sudo yum install byobu

Para Fedora:

$ sudo dnf install byobu

Para comenzar con byobu, simplemente escriba byobu en la terminal y presione Enter.

$ byobu

Ahora, si está utilizando el tmux o la pantalla, puede elegir y seleccionar entre cualquiera de ellos para el backend colaborado.

$ byobu-select-backend

Ahora, puede administrar y mantener sus sesiones SSH ejecutándose en segundo plano después de la desconexión, use las teclas de función del teclado del sistema. Para comenzar con SSH junto con byobu, presione CTRL + MAYÚS + F2 desde su teclado para habilitar el entorno SSH. Para mover sus sesiones SSH hacia adelante y hacia atrás, puede usar ALT + ARRIBA y ALT + ABAJO.

Para desconectar sus sesiones SSH, presione F6 desde el teclado. Ahora, si estás buscando desconectar pero no desconectar la sesión, aquí tienes. Para separar las sesiones SSH y seguir conectado, presione MAYÚS + F6. Aquí hay un comando de teclado adicional para usted. Para mantener activa solo la sesión de pantalla activa y cerrar todas las demás ventanas, presione ALT + F6.

4. Siga ejecutando sesiones SSH con el comando nohup


El comando nohup o ‘no hangup’ es una herramienta alternativa muy útil para la pantalla o tmux. También permite a los usuarios mantener las sesiones SSH ejecutándose incluso después de desconectarse. El comando nohup le dice al sistema que ejecute todos los procesos en segundo plano evitando señal colgar (SIGHUP).

Para consultar los manuales y las opciones de nohup de su terminal Linux, escriba el siguiente comando en el terminal y presione Entrar.

$ nohup options

Para verificar las listas de trabajo actualmente activas, use el comando -l desde su terminal.

$ jobs -l

Ahora, para la conexión SSH, para evitar la conexión perdida y mantener sus sesiones ejecutándose después de la desconexión, use las líneas de comando nohup que siguen a su trabajo. También puede obtener la lista de salida de sus trabajos en un archivo de texto utilizando el comando cat junto con el comando nohup.

$ nohup ./hello.sh
$ cat nohup.out

Para ejecutar un proceso en segundo plano, puede usar el símbolo & justo después del comando nohup. Por ejemplo, si quiero probar ping para wordpress-408970-1286763.cloudwaysapps.com en segundo plano, la línea de comando será como la siguiente línea a continuación. Y cuando crea que su trabajo está hecho, para ver el resultado, use el comando pgrep.

$ nohup ping ubuntupit.com &
$ pgrep -a ping

5. Siga ejecutando sesiones SSH con el comando disown


Si no tiene los privilegios de root del sistema, tal vez este resolverá su problema. El comando disown puede hacer que cualquier tarea no figure en la lista del registro del sistema en ejecución. Por lo tanto, puede ocultar un proceso en curso para evitar todos los errores de cierre de sesión automático o el signal cuelgue (SIGHUP). En realidad, puede usar el comando de administración de procesos diswon para mantener sus sesiones SSH en funcionamiento ocultando su tarea.

Para eliminar u ocultar su tarea del administrador de tareas, use el comando diswon en la terminal.

$ disown 

Para verificar el estado actual de la tarea, use el comando de shell actual.

$ current shell

También puede establecer una lista de tareas en un comando de terminal de una sola línea.

$ disown jobs1
$ disown jobs1 jobs2 ... jobsn

Y para verificar la lista de tareas, use el comando -l.

$ jobs -l

Para eliminar todos los trabajos actuales de la ventana, escriba la sintaxis -a que sigue al comando disown.

$ disown -a

Para eliminar solo uno o el trabajo en ejecución de la ventana, use la sintaxis -r que sigue al comando diswon.

$ disown -r

Ahora para SSH, para ejecutar un trabajo en segundo plano después de conectar la sesión, use la sintaxis -h. Este proceso puede mantener sus sesiones SSH ejecutándose incluso después de la desconexión.

$ disown -h jobID
$ disown -h %2

Arreglando el error de tiempo de espera de SSH en RHEL


Cuando está conectado a SSH en Red Hat Enterprise Linux (RHEL), puede tener un problema frecuente de tiempo de espera y perder la conexión. Este problema se produce debido al tiempo de respuesta no válido desde el final del cliente o el final del host. En su directorio raíz de Red Hat, debe buscar y editar el archivo sshd_config.txt para resolver este problema de tiempo de espera. Una vez que haya terminado, puede recuperar su conexión SSH incluso después de desconectarse.

Allí, dentro del archivo sshd_config.txt, encontrará dos opciones denominadas ClientAliveInterval y ClientAliveCountMax, debe editar estos archivos de registro para maximizar el tiempo de respuesta del servidor al cliente. El intervalo de tiempo de espera se calcula multiplicando los valores de ClientAliveInterval y ClientAliveCountMax.

Todo lo que necesita es editar la duración del tiempo de estos dos valores de acuerdo con su sistema y la duración de respuesta de la red. Permita que desee maximizar el tiempo de 10 minutos para el final del intervalo del cliente y 5 veces para el recuento del cliente, luego su registro de texto dentro del archivo sshd_config.txt será el siguiente. Y luego, reinicie el SSH.

ClientAliveInterval 10m
ClientAliveCountMax 5

Pensamientos finales


Para un administrador del sistema, mantener sesiones SSH y procesos en ejecución es un trabajo crucial para satisfacer al cliente y cumplir con la tarea. Desconectarse y perder sesiones frecuentes es muy molesto y molesto. Entonces, en esta publicación, hemos tratado de discutir e ilustrar las razones por las cuales las sesiones SSH se desconectan y también describimos todos los métodos posibles sobre cómo mantener las sesiones SSH ejecutándose después de la desconexión.

Si alguna vez ha pasado por la molestia de la desconexión de la sesión SSH y sabe lo molesto que puede ser, comparta su experiencia con nosotros. Y también comente si tiene algo que agregar o pregunte algo relacionado con esta publicación en la sección de comentarios. No olvides compartir esta publicación con tus amigos en las redes sociales.