Si usa SSH para conectarse a servidores Linux remotos, notará que si mantiene su sesión SSH inactiva durante algún tiempo y luego intenta usarla nuevamente, la sesión SSH se desconecta con un mensaje de error como este:
:client_loop: send disconnect: Broken pipe
En algunos sistemas, mostrará 'Error de escritura:tubería rota' o 'Conexión cerrada por host remoto'.
Veamos qué causa este error y cómo hacer para mantener activa su conexión SSH.
Reparación de error de tubería rota con SSH
Como habrás adivinado, la conexión SSH está cerrada debido a la inactividad. No hay un valor establecido, pero suele ser alrededor de 5 minutos más o menos.
Lo que puede hacer para evitar la desconexión de la sesión SSH es enviar un 'mensaje vivo' desde el servidor al cliente (ClientAliveInterval
) o del cliente al servidor (ServerAliveInterval
) en cierto intervalo de tiempo.
De esta manera, mantiene viva la sesión SSH porque hay una comunicación entre el cliente y el servidor y el servidor entiende que el cliente todavía está allí.
Ahora, hay dos maneras de hacer eso. O envía el mensaje vivo del cliente al servidor o del servidor al cliente.
- Si se conecta a varios servidores a través de SSH, configúrelo en su máquina.
- Si es un administrador de sistemas y varios de los usuarios se quejan de la desconexión frecuente de la conexión SSH, puede configurarlo en el servidor.
Método 1:cambio de configuración SSH del lado del cliente
Supongamos que desea mantener activa su conexión SSH con hasta 10 minutos (600 segundos) de tiempo de inactividad.
Mientras se conecta al sistema Linux remoto a través de SSH, puede mencionar el ServerAliveInterval
valor como este:
ssh -o ServerAliveInterval=600 [email protected]_ip_address
Ahora, esto funciona, pero ingresar manualmente esta opción cada vez que se conecta al servidor es tedioso. ¿Por qué no hacerlo permanente?
Espero que esté al tanto de los archivos de configuración de SSH. En el lado del cliente, puede aprovecharlo para establecer ciertos parámetros SSH para conexiones específicas o para todas. He explicado el archivo de configuración SSH en detalle aquí.
Primero, asegúrese de tener el archivo de configuración ssh. Si no lo crea:
touch ~/.ssh/config
Es importante otorgarle los permisos de archivo correctos; de lo contrario, tendrá un error de permiso denegado al conectarse a través de SSH.
Use el comando chmod y agregue el siguiente permiso de archivo:
chmod 600 ~/.ssh/config
Si te sientes perezoso o no quieres entrar en detalles, usa este comando para establecer el intervalo activo en 600 segundos (10 minutos):
echo "ServerAliveInterval 600" >> ~/.ssh/config
Esto establecerá el valor de ServerAliveInterval en 10 minutos para todas las conexiones SSH que usará. Pruébalo si quieres.
Si desea hacerlo más apropiado, debe agregarlo así:
Host *
ServerAliveInterval 600
Método 2:cambio de configuración SSH del lado del servidor
El archivo de configuración de SSH para el servidor generalmente se encuentra en /etc/ssh/sshd_config.
Si abre este archivo, encontrará dos parámetros de interés aquí:
ClientAliveInterval
:ClientAliveCountMax
:Este es el número de intentos que hará el servidor para enviar el mensaje activo.
Digamos que configuraste ClientAliveInterval
a 200 segundos y ClientAliveCountMax
a 3. Esto significa que el servidor enviará un mensaje vivo después de 200 segundos. Si no hay actividad del cliente, volverá a enviar un mensaje activo a los 400 segundos. No hay respuesta/actividad del cliente y se envía otro mensaje activo a los 600 segundos. Después de esto (600 segundos) la conexión SSH se desconecta.
Puede editar el /etc/ssh/sshd_config
archivo en su editor de texto basado en terminal favorito como Vim. Busque las entradas ClientAliveInterval y ClientAliveCountMax. Elimina la tecla # al principio de las líneas y dales el valor apropiado.
Guarde y salga del archivo.
No establezca el tiempo de espera de la conexión SSH en varias horas. Eso sería un desperdicio de recursos.
Espero que este tutorial te haya ayudado a solucionar el problema del error de tubería rota con la conexión SSH. Tus comentarios son bienvenidos.