Túnel SSH, cómo saber la información del puerto del servidor después del túnel

Túnel SSH, cómo saber la información del puerto del servidor después del túnel

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.

información relacionada