¿Qué es el Error 'Broken Pipe' en SSH en Linux?
El error Write failed: Broken pipe es uno de los problemas más comunes a los que se enfrentan los administradores de sistemas y desarrolladores al trabajar con servidores remotos mediante SSH en entornos Linux. Este molesto fallo ocurre repentinamente cuando la conexión entre el cliente y el servidor se interrumpe, generalmente debido a un periodo de inactividad prolongado que provoca que un enrutador intermedio, un cortafuegos (firewall) o el propio servidor cierren el socket de red sin notificar adecuadamente a los extremos.
Causas Principales de la Desconexión SSH
- Inactividad prolongada en la terminal que provoca que dispositivos de red intermedios descarten la sesión.
- Configuración predeterminada de tiempo de espera (timeout) demasiado agresiva en el cliente o en el servidor OpenSSH.
- Interrupciones temporales en la red local o inestabilidad en la conexión a internet.
Método 1: Configurar el KeepAlive en el Cliente SSH (A nivel de usuario)
La forma más rápida y efectiva de evitar que las conexiones inactivas mueran es configurar paquetes de mantenimiento de conexión (keepalive) directamente en tu archivo de configuración SSH local.
- Abre la terminal de tu distribución Linux.
- Edita o crea el archivo de configuración SSH para tu usuario usando tu editor favorito:
nano ~/.ssh/config. - Agrega las siguientes líneas al archivo para enviar una señal de pulso al servidor cada 60 segundos:
Host *ServerAliveInterval 60ServerAliveCountMax 3 - Guarda los cambios (en Nano presiona
Ctrl+O,Entery luegoCtrl+X). - Asegúrate de que los permisos del archivo sean correctos ejecutando:
chmod 600 ~/.ssh/config.
Método 2: Configurar el Servidor SSH (A nivel global)
Si administras el servidor remoto y deseas solucionar el error Broken Pipe para todos los usuarios que se conectan a él, debes modificar la configuración del demonio SSH.
- Accede a tu servidor Linux mediante SSH.
- Abre el archivo de configuración global del servidor con privilegios de superusuario:
sudo nano /etc/ssh/sshd_config. - Busca y descomenta (o añade) las siguientes directivas:
ClientAliveInterval 60ClientAliveCountMax 3 - Estas directivas indican al servidor que envíe un paquete nulo al cliente cada 60 segundos y, si no recibe respuesta tras 3 intentos, cierre la sesión limpiamente.
- Guarda el archivo y reinicia el servicio SSH para aplicar los cambios con el comando correspondiente a tu distro:
sudo systemctl restart sshosudo systemctl restart sshd.