
Estoy intentando buscar en Google un método para lograrlo pero no puedo encontrarlo.
Básicamente, he creado un túnel SSH a varios hosts remotos a través de un host bastión usando un comando como este.
ssh -L 9000:ourprodserver.domain.com:1521 \
-L 9001:otherprodserver.domain.com:1521 \
-A -l [email protected] somebastionhost.domain.net
Ahora, ¿cómo puedo saber los detalles de la conexión asignados al puerto local siempre que el túnel esté activo?
es decir, quiero poder crear una lista de este formulario.
L_port Remote_host R_port
9000 ourprodserver.domain.com 1521
9001 otherprodserver.domain.com 1521
¿Es posible?
Respuesta1
Existe una solución simple, pero solo enumerará losactualmente activoconexiones de túnel: está usando la secuencia de escape ssh~#
Si el túnel no se utiliza, no se mostrará.
De la ayuda (que se muestra con ~? dentro de una conexión ssh activa):
~# - lista de conexiones reenviadas
La salida de ejemplo será:
user@somebastionhost$ ~#
The following connections are open:
#4 client-session (t4 r0 i0/0 o0/0 fd 9/10 cc -1)
#5 direct-tcpip: listening port 9000 for ourprodserver.domain.com port 1521, connect from 127.0.0.1 port 48954 to 127.0.0.1 port 9000 (t3 nr0 i0/0 o0/0 fd 12/12 cc -1)
En el lado del cliente, puedes hacerte una idea de los túneles abiertos, incluso los inactivos, enumerando los sockets TCP que ha abierto:
lsof -n -p <pidof-ssh-client> -a -iTCP -a -sTCP:LISTEN
Aunque esto no responde completamente a tu pregunta, puede ser un punto de partida.