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 reiniciar su sshd)
echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
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. Por lo tanto, si puede conectarse a través de ssh user@serverusted, es muy probable que pueda conectarse con mosh simplemente llamando mosh user@server, 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 ).
Si desea tener un período de conexión más largo, en el cliente agregue:
echo 'ServerAliveInterval 30' | sudo tee -a ~/.ssh/config
echo 'ServerAliveCountMax 1200' | sudo tee -a ~/.ssh/config
ServerAliveCountMaxde forma predeterminada, se establece en 3. Por lo tanto, una vez que ServerAliveIntervalhaya 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).
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 arpcomando.
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
~/.ssh/config
en mi Mac, ¿tengo que crearlo allí o está en otro lugar?~/.ssh
). Entoncesmkdir -p ~/.ssh; chmod 700 ~/.ssh; touch ~/.ssh/config
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. Por lo tanto, si puede conectarse a través de
ssh user@server
usted, es muy probable que pueda conectarse con mosh simplemente llamandomosh user@server
, 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 ).
fuente
Si desea tener un período de conexión más largo, en el cliente agregue:
ServerAliveCountMax
de forma predeterminada, se establece en 3. Por lo tanto, una vez queServerAliveInterval
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).fuente
Por lo general, significa que su conexión de red (TCP) se restableció. Por ejemplo, su proveedor de internet lo reconectó o algo así.
fuente
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
arp
comando.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
Notará dos conjuntos de direcciones mac que usan la misma dirección IP. Evite conflictos configurando uno a otra dirección IP.
fuente
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:
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 .
fuente