Me estoy conectando a una caja CentOS 5.5 a través de SSH desde una máquina Ubuntu 11.04.
La conexión parece funcionar como se espera cuando está en uso activo (es decir, sin retraso ni pérdida), pero si se deja inactiva durante un tiempo, se congelará y dejará de responder. Finalmente, se devolverá el mensaje de error "Error de escritura: tubería rota" y volveré a la solicitud de mi máquina local.
¿Qué tipo de cosas puedo hacer para ayudar a depurar esto, descubrir qué está sucediendo y resolver esto? Como desarrollador, esto hace que mi vida sea un dolor tener que volver a conectarme constantemente.
man sshd_config
.La respuesta real es casi siempre que tiene un dispositivo NAT de algún tipo en la ruta, generalmente un firewall, cuyas tablas de estado tienen un tiempo de espera bastante agresivo. Debido a que deja su conexión ssh inactiva durante algunos períodos de tiempo, el dispositivo NAT "olvida" la asignación entre su dirección interna y el número de puerto de origen, y su dirección efímera externa y el número de puerto.
Cuando más tarde intente hacer algo en esa ventana ssh, se le asignará un nuevo par efímero de dirección / puerto, del cual el servidor ssh de destino no tiene conocimiento y no responde; más tarde, se alcanza un tiempo de espera local y su máquina local interrumpe la conexión.
La solución práctica para esto es hacer exactamente lo que yuriismaster sugiere: habilitar KeepAlives (que garantiza que el tráfico regular "haga cosquillas" a esa entrada de la tabla de estado) y usar
screen
en el lado remoto (para preservar el estado en caso de que las cosas se caigan). Solo publico esta respuesta porque preguntaste qué está sucediendo y qué hacer al respecto. Esperemos que esto aclare por qué las sugerencias de yuriismaster son buenas.fuente