GNU/Linux >> Tutoriales Linux >  >> Linux

Reparación de error de tubería rota con conexión SSH

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 : Este es el período de tiempo de inactividad después del cual el servidor enviará un mensaje vivo al cliente conectado ssh.
  • 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.


Linux
  1. WebLogic no comienza con el error "no hay enrutador disponible para el destino"

  2. Cómo aumentar el tiempo de espera de la conexión SSH

  3. La tubería rota EC2 ssh finaliza el proceso en ejecución

  4. ¿SSH con Authorized_keys a un sistema Ubuntu con homedir encriptado?

  5. Nombre de usuario y contraseña en la línea de comandos con sshfs

Cómo administrar de forma remota un servidor Linux con SSH

Corrección de HTTP básico:acceso denegado y error de falla de autenticación fatal con GitLab

Cómo bloquear su servidor CentOS con IPTables

Genere claves RSA con SSH usando PuTTYgen

Inicie sesión en un servidor Linux con una clave privada SSH en un cliente de Windows

Cómo proteger SSH con Fail2Ban