Error Client_loop: send disconnect: Broken pipe

Si has recibido el error Client_loop: send disconnect: Broken pipe, al establecer una conexión en Linux, te explico a continuación las causas.

Este error suele lanzarse cuando  dejamos una conexión ssh abierta durante mucho tiempo, o cuando nuestra conexión  a Internet se desconecta.

Detrás del error, existe la causa y esta es que el tiempo de conexión ssh oha superado los valores asignados a la variable  ClientAliveInterval , lo que provoca el mensaje.

La solucion es revisar tu archivo sshd_config, que es el archivo de configuración para las conexiones ssh  y cuya ruta es generalmente:

/etc/ssh/sshd_config

una vez allí, dentro busca ClientAliveInterval 

Si esta comentado descomentalo y si esta descomentado, simplemente incrementa su valor para ampliar el intervalo.

Si es así, puedes descomentarlo, o aumentar el intervalo, o simplemente comentarlo.

Esta variable establece un intervalo de tiempo de espera en segundos, después del cual si no se han recibido datos del cliente, sshd enviará un mensaje a través del canal cifrado para solicitar una respuesta del cliente.

Su valor predeterminado es 0, lo que indica que estos mensajes no se enviarán al cliente.

Con privilegios de superuser accede y establece por ejemplo un valor de 300

sudo nano /etc/ssh/sshd_config

Luego reinicia el servidor sshd:

sudo systemctl restart ssh

También puedes si no quieres tocar la configuración emplear la opción -o, tanto para conexión ssh como para el uso de SCP, emplandola junto a otras opciones, por ejemplo

% ssh -o TCPKeepAlive=yes -o ServerAliveCountMax=30 -o ServerAliveInterval=5 mi_usuario@miservidor

ClientAliveCountMax

Establece el número de mensajes en vivo, que se pueden enviar al cliente, sin que sshd reciba ningún mensaje del cliente.

Cuando se alcanza este umbral, se desconecta al cliente y finaliza la sesión.

Los mensajes en vivo del cliente se envían a través del canal cifrado y, por lo tanto, no son falsificables.

Esta opcion difiere mucho de TCPKeepAlive

Esta opción solo se aplica a la versión 2 del protocolo.

ClientAliveInterval
Esta variable establece un intervalo de tiempo de espera en segundos después del cual si no se han recibido datos del cliente, sshd enviará un mensaje a través del canal cifrado para solicitar una respuesta del cliente.

El valor predeterminado es 0, lo que indica que estos mensajes no se enviarán al cliente. Esta opción solo se aplica a la versión 2 del protocolo.

TCPKeepAlive
Especifica si el sistema debe enviar mensajes tcp keepalive al otro lado. Si se envían, la muerte de la conexión o el bloqueo de una de las máquinas se notará correctamente.

Si no se envían keepalives TCP, las sesiones pueden bloquearse indefinidamente en el servidor, dejando usuarios »fantasmas» y consumiendo recursos del servidor.

El valor predeterminado es »sí» (para enviar mensajes TCP keepalive), y el servidor notará si la red se cae o el host cliente se bloquea. Esto evita las sesiones infinitamente colgantes.

Es importante considerar que la opción TCP keepalive habilitada por TCPKeepAlive es falsificable.

Para deshabilitar los mensajes TCP keepalive, el valor debe establecerse en »no».

El valor predeterminado de ClientAliveCountMax es 3. Si ClientAliveInterval se establece en 15 y ClientAliveCountMax se deja en el valor predeterminado, los clientes SSH que no respondan se desconectarán después de aproximadamente 45 segundos.

En definitva el uso de estas variables te permite por ejemplo, enviar envíe mensajes del tipo «keep-alive» cada 5 segundos.

Si el límite de 30 mensajes consecutivos no recibe una respuesta del servidor, que representa 30×5, entonces se entiende que la conexión está rota / muerta y el proceso del cliente termina.

Espero sinceramente que esto ayude a alguien.

Gracias

La belleza vista de cerca, se convierte en monstruosidad. Las mariposas, las luciernagas, tu, yo y todo lo demas.

Translate »