¿Cómo permanezco conectado mientras ClientAliveInterval está configurado?

¿Cómo permanezco conectado mientras ClientAliveInterval está configurado?

Por razones de cumplimiento, todos mis servidores Debian están configurados para que se agoten después de 15 minutos usando la siguiente configuración en/etc/ssh/sshd_config

ClientAliveInterval 900
ClientAliveCountMax 0

Por supuesto, esto hace que operar en estos servidores sea molesto y peligroso, ya que cualquier tiempo de inactividad podría desconectarse.

Estoy buscando un comando simple que mantenga viva la sesión de un cliente sin modificar la configuración existente.

Respuesta1

Si estás siguiendo unguía de implementación técnica de seguridadactualmente dice

ClientAliveInterval                        600
ClientAliveCountMax                        0

que se desconectará yinactivosesión ssh (es decir, una ventana de PuTTY) después de 10 minutos.

En RHEL 7, los valores predeterminados para esos dos elementos, desde una instalación limpia desde rhel-server-7.9-x86_64-dvd.iso, o centos, son 0y 3respectivamente, lo que da como resultado una sesión ssh que nunca finaliza automáticamente.

ver para más detalles:https://stackoverflow.com/questions/71174746/clientaliveinterval-is-not-closing-the-idle-connection

Lo más relevante:Estos no son para circunstancias de usuario inactivo, son, como se indica en el extracto de la página de manual, para clientes SSH que no responden. El cliente no responderá si el programa cliente se ha congelado o la conexión se ha interrumpido. El cliente no debería dejar de responder simplemente porque el usuario humano se haya alejado del teclado: el cliente ssh seguirá recibiendo los paquetes enviados desde el servidor.

Está en el cliente,en masilla.exe, bajoConexiónyOpciones para controlar la conexión.haysegundos entre keepalives (0 para apagar). Por defecto es 0. Establézcalo en un número menor que el ClientAliveIntervalestablecido en sshd_config.

Si no usa putty.exe, desde Windows, y usa ssh desde otra máquina de Linux, entonces el cliente ssh se configura a través de, /etc/ssh/ssh_configsin embargo, no hay ningún elemento correspondiente allí que yo sepa para enviar un paquete de mantenimiento de vez en cuando.

Nota: al usar putty.exe desde Windows con su keepalive predeterminado de 0, y el servidor ssh que tiene un ClientAliveInterval configurado, incluso si está viabierto se desconectará, lo que generará unperdidoarchivo que vise recuperará a través de su archivo .swp. O si ejecuta un programa que constantemente genera resultados, es decir, desde el lado del servidor y la conexión ssh terminará matando su trabajo... tiene que haber algo desde el lado del cliente (una pulsación de tecla) que cuente y provoque unmantener viva. Entonces, con putty.exe de Windows es una solución bastante fácil, para ssh de Linux a Linux no sé cómo evitar la desconexión sin presionar una tecla del teclado en el lado del cliente en la sesión ssh.

Actualización: de Linux a Linux parece que necesitas usar ssh -ovarias opciones. Ver para más detalles:¿Cómo funciona tcp-keepalive en ssh?

Por ejemplo: ssh -o ServerAliveInterval=5 -o ServerAliveCountMax=1

algo así como con /etc/yum.conf teniendo gpgcheck=1, y simplemente haciendoinstalar yum --nogpgcheck :)

Respuesta2

Creo que deshabilitaste la configuración estableciendoClienteAliveCountMaxa0. Entonces, configurarlo en 1 debería funcionar.

ClienteAliveCountMax

Establece el número de mensajes activos del cliente que pueden enviarse sin que sshd(8) reciba ningún mensaje del cliente. Si se alcanza este umbral mientras se envían mensajes de cliente activo, sshd desconectará el cliente y finalizará la sesión. Es importante tener en cuenta que el uso de mensajes de cliente activo es muy diferente de TCPKeepAlive. Los mensajes activos del cliente se envían a través del canal cifrado y, por lo tanto, no serán suplantables. La opción TCP keepalive habilitada por TCPKeepAlive es falsificada. El mecanismo de cliente activo es valioso cuando el cliente o el servidor dependen de saber cuándo una conexión se ha vuelto inactiva.

Elel valor predeterminado es 3. SiClientAliveInterval está establecido en 15y ClientAliveCountMax se deja en el valor predeterminado, los clientes SSH que no responden se desconectarán después de aproximadamente45 segundos.

Pero debo admitir que estoy de acuerdo con @TienPhan. Es mejor mantener la configuración fuera del servidor. Aún así depende del caso de uso. Si todos los usuarios deben ser tratados de la misma manera, la configuración del lado del servidor es la opción.

Respuesta3

De hecho, no necesitamos configurar el intervalo de tiempo en el lado del servidor. Más cosas no te harán feliz.

Puede utilizar "ServerAliveInterval" y agregarlo al archivo ~/.ssh/config como se muestra a continuación:

host *
        ServerAliveInterval 120

Nota: 120 son segundos, puedes cambiar lo que quieras.

Luego afecta a todos los servidores de este archivo. O puede configurarlo para un servidor individual.

información relacionada