Tenemos un hardware que instalamos en las ubicaciones de nuestros clientes, ese hardware se conecta a nuestro servidor ssh y establece un túnel ssh inverso para que podamos obtener acceso a varios sistemas de clientes con fines de monitoreo.
Todo funciona bien hasta que haya una desconexión impura de la sesión SSH.
Cuando eso sucede, en nuestro servidor SSH los puertos que fueron utilizados por el túnel inverso permanecen atascados en el modo de ESCUCHAR y cuando nuestro hardware remoto finalmente intenta reconectarse automáticamente y restablecer sus túneles, falla con el error
Advertencia: error de reenvío de puerto remoto para el puerto de escucha XXXX
Probé si había un problema con nuestro servidor o cliente SSH al intentar una desconexión limpia y un curso que liberara bien los puertos. Cuando simulo una falla de conexión (desconecte el puerto Ethernet del hardware del cliente, por ejemplo), entonces tenemos el mismo problema que describí anteriormente.
¿Cuál es la forma correcta de manejar esta situación? Tenga en cuenta que estos son túneles invertidos, por lo que pase lo que pase debe hacerse en el servidor SSH. Idealmente, necesito que el servidor ssh se dé cuenta instantáneamente de que la sesión SSH que aloja los túneles está inactiva y libere los puertos que estaba usando. Supongo que la solución podría implicar matar el proceso SSH en cuestión, pero tengo que tener cuidado con eso porque tenemos varios clientes que se conectan al mismo servidor ssh y no me gustaría desconectarlos.
Siendo tan maduro, estoy seguro de que SSHD tiene algún tipo de función incorporada para manejar esto, pero simplemente no puedo entenderlo.
Por favor avise para que no tenga que volver a administrar los cuadros de Windows ...
FYI: estoy ejecutando esto en una distribución basada en Debian.