¿Qué hace realmente ServerAliveCountMax en SSH?
Estoy tratando de asegurarme de que cuando me conecto a mi servidor a través de SSH, la conexión permanezca abierta durante un largo período de tiempo en lugar de que la conexión se apague después de un corto período de inactividad. Este es el ejemplo
Host *
ServerAliveInterval 60
ServerAliveCountMax 2
Escuché de una fuente que la configuración anterior siempre enviará una respuesta al servidor cada 60 segundos siempre que el servidor reciba esa respuesta. Sin embargo, si por alguna razón la respuesta no llega al servidor, intentará enviar otro mensaje. Si ese mensaje también falla, cerrará la conexión. (Siento que esto está mal)
La segunda y la tercera fuente embargo dicen algo diferente. Afirman que se enviará un mensaje al servidor cada 60 segundos si hay un período de inactividad, pero solo enviará 2 solicitudes y luego cerrará la conexión.
Entonces, ¿qué hace exactamente ServerAliveCountMax?
Interval
set para0
deshabilitarla. Pero no está claro si se estableceMax
a0
. ¿Enviaría infinitos ping vivos, o ninguno?Los mensajes vivos del servidor son útiles cuando un servidor SSH se ha configurado para cerrar conexiones después de un período de tiempo sin tráfico (los proveedores de alojamiento web compartido que ofrecen acceso SSH casi siempre hacen esto, por ejemplo). Establecer estas dos opciones envía un paquete cada
ServerAliveInterval
segundo, por un máximo deServerAliveCountMax
veces, manteniendo así la sesión viva.Para responder a los comentarios sobre la incertidumbre de establecer cualquiera de las opciones
0
, he leído el código fuente de laopenssh
implementación, y esto es lo que veo ...La configuración
ServerAliveInterval
de0
NO enviará los paquetes, pero mantendrá viva la sesión indefinidamente, suponiendo que la conexión no se interrumpe debido al tiempo de espera de TCP y que el servidor no está configurado para descartar clientes inactivos.Establecer
ServerAliveCountMax
en0
tiene el mismo efecto que establecerServerAliveInterval
en0
.Establecer un valor negativo o algo mayor que
INT_MAX
(es decir, 2,147,483,647) dará como resultado un error de "valor entero ..." .Establecer
ServerAliveCountMax
entreINT_MAX/1000+1
(es decir, 2,147,484) aINT_MAX
(es decir, 2,147,483,647) también sería equivalente a establecer cualquier valor en0
.Entonces, en esencia, la mayor cantidad de tiempos de espera que puede obtener (mientras aún envía los paquetes) es
INT_MAX/1000
( es decir, 2,147,483). Con un tiempo de espera1
y sin tráfico en las sesiones, eso te llevaría casi 25 días.Obviamente, otras implementaciones de SSH pueden tener resultados diferentes.
fuente