it-swarm-es.tech

¿Qué significa el mensaje de tubería rota en una sesión SSH?

A veces mi sesión SSH se desconecta con un Write failed: Broken pipe mensaje. Qué significa eso? ¿Y cómo puedo mantener abierta mi sesión?

Sé acerca de screen, pero esa no es la respuesta que estoy buscando. Creo que esta es una opción de configuración sshd.

107
Peter Stuifzand

Es posible que su servidor cierre las conexiones que están inactivas durante demasiado tiempo. Puede actualizar su cliente (ServerAliveInterval) o su servidor (ClientAliveInterval)

 ServerAliveInterval
         Sets a timeout interval in seconds after which if no data has
         been received from the server, ssh(1) will send a message through
         the encrypted channel to request a response from the server.  The
         default is 0, indicating that these messages will not be sent to
         the server.  This option applies to protocol version 2 only.

 ClientAliveInterval
         Sets a timeout interval in seconds after which if no data has
         been received from the client, sshd(8) will send a message
         through the encrypted channel to request a response from the
         client.  The default is 0, indicating that these messages will
         not be sent to the client.  This option applies to protocol
         version 2 only.

Para actualizar su servidor (y reinicie su sshd)

echo "ClientAliveInterval 60" | Sudo tee -a /etc/ssh/sshd_config

O del lado del cliente:

echo "ServerAliveInterval 60" >> ~/.ssh/config 
92
Gert

Una solución alternativa sería usar mosh - el Shell móvil . A diferencia de ssh, se conecta a través de UDP y admite roaming. Puede comenzar su sesión en casa, suspender su computadora portátil, llevarla al trabajo/amigos/donde sea que tenga Internet, desconectar su computadora portátil y continuar trabajando como si nada hubiera pasado. Es especialmente útil si tiene una conexión a Internet pésima: muestra comentarios instantáneos si sus pulsaciones de teclas no llegan al servidor y continuamente intenta restablecer la conexión.

La instalación y configuración son simples: ahora se incluye en todas las distribuciones actuales de Linux (más algunas que no son Linux) y coordina la inicialización y autenticación de la sesión a través de una conexión ssh previa. Entonces, si puede conectarse a través de ssh [email protected] es muy probable que pueda conectarse con mosh simplemente llamando mosh [email protected], si los paquetes mosh están instalados en ambos extremos.

La razón principal de las fallas de conexión es que debe llegar al servidor en un puerto UDP (rango predeterminado: 60000-61000) para que mosh funcione. Entonces, si el servidor está detrás de un firewall, no tiene suerte si no puede perforarlo usted mismo ( implicaciones de seguridad ).

6
Perseids

Si desea tener un período de conexión más largo, en el cliente agregue:

echo 'ServerAliveInterval 30' | tee -a ~/.ssh/config
echo 'ServerAliveCountMax 1200' | tee -a ~/.ssh/config

ServerAliveCountMax por defecto está configurado en 3. Por lo tanto, una vez que ServerAliveInterval haya enviado 3 paquetes pequeños de información a su servidor, se cerrará automáticamente. Establecerlo en 1200 significa que este proceso tendrá que ocurrir al menos 1200 veces. En resumen, debe estar conectado al menos 30 * 1200 segundos (10 horas).

5
Francisco Costa

Por lo general, significa que su conexión de red (TCP) se restableció. P.ej. su proveedor de internet lo reconectó o algo así.

2
maxschlepzig

Tuve el mismo problema pero no es como se esperaba. Si encuentra que en la misma red otro servidor está intentando la misma dirección IP, enfrentará el mismo problema. Para resolver esto, debe verificar si hay otros servidores que usan su misma dirección IP. Esto se puede hacer usando el comando arp.

Estoy usando Debian, así que aquí hay una muestra de los comandos que uso para determinar si otro servidor estaba usando la misma dirección IP

apt-get install arp-scan
arp-scan -I eth0 -l | grep 192.168.1.42
  192.168.1.42 d4:eb:9a:f2:11:a1 (Unknown)
  192.168.1.42 f4:23:a4:38:b5:76 (Unknown) (DUP: 2)

Notará dos conjuntos de direcciones mac que usan la misma dirección IP. Evite conflictos configurando uno a otra dirección IP.

1
Bill Ang

Otra causa del "mensaje de tubería rota" es que otra máquina está intentando usar la misma IP que su host.

Una manera simple de probar si alguien más está usando esa IP:

  1. Apaga tu host
  2. haga ping a la misma IP para ver si otra máquina está usando esa IP

Para averiguar qué máquinas hay en su red, puede usar este título de pregunta de Unix y Linux: Cómo encontrar qué otras máquinas están conectadas a la red local .

0
Josir