manera de detectar la desconexión del cliente ssh


2

¿Cómo puedo detectar cuando un cliente SSH se desconecta de mi servidor? Si se interrumpe la conexión con el cliente (el cliente no envía el comando de desconexión), mi aplicación de servidor recibe el carácter 0xFF a través de la entrada estándar. Intento usar los parámetros KeepAlive y ClientAlive en sshd_config pero la conexión nunca se cierra (no recibo ninguna señal como SIGHUP, SIGTERM o cualquier otra).

Por otro lado, ¿cómo puedo cerrar una conexión bloqueada? Hay varias conexiones establecidas y las otras funcionan bien. Reiniciar el servidor SSH no es la solución.


¿Cómo se conecta exactamente el cliente ssh a su aplicación?
Kenster

Puede intentar aumentar la verbosidad en la que sshd (o cualquier daemon ssh que use) registre eventos y, si está abierto, analice el registro del sistema para los eventos que indican los eventos que está buscando.
James Lui

No importa cómo se conecta el cliente. Incluso si uso el cliente linux ssh que se conecta a localhost.
mauricio

El registro decía: - sshd [26227]: teclado interactivo / pam aceptado para xxxxx desde el puerto 10.0.0.1 47537 ssh2 sshd [26227]: pam_unix (sshd: session): sesión abierta para el usuario xxxxx por (uid = 0) - sshd [26230]: desconexión recibida de 10.0.0.1: 11: desconectado por el usuario sshd [26227]: pam_unix (sshd: session): sesión cerrada para el usuario xxxxx - Y, por supuesto, cualquier señal recibida ...
mauricio

1
Tengo la extraña sensación de que realmente no estás obteniendo 0xFF, pero que tu lectura está devolviendo -1 (EOF), que estás emitiendo a un personaje sin signo, dando 0xFF. Verifique su código y descarte esta posibilidad.
aecolley
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.