Cómo saber el reenvío de puertos ssh activos

12

He configurado en ~/.ssh/configmuchos reenvío de puertos para VNC con diferentes puertos para cada servidor.

¿Hay algún comando que pueda ayudarme a saber a qué puerto se reenvía cuando abro una sesión SSH?

slc66
fuente

Respuestas:

13

Si usa la -vopción ssh, le mostrará lo que está reenviando (pero también le mostrará un montón de otros mensajes de depuración):

ssh -v -L2222:localhost:22 remotehost

Te mostrará:

...debug messages...
debug1: Authentication succeeded (publickey).
Authenticated to remotehost ([10.0.0.23]:22).
debug1: Local connections to LOCALHOST:2222 forwarded to remote address localhost:22
debug1: Local forwarding listening on ::1 port 2222.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on 127.0.0.1 port 2222.
...debug messages...

Y luego, cuando esté conectado a ese shell remoto, puede escribir una secuencia de teclas especial:

~#

que enumerará las conexiones de esta manera:

The following connections are open:
  #3 client-session (t4 r0 i0/0 o0/0 fd 7/8 cc -1)
  #4 direct-tcpip: listening port 2222 for localhost port 22, connect from 127.0.0.1 port 59742 (t4 r1 i0/0 o0/0 fd 10/10 cc -1)

Sin embargo, tenga en cuenta que esto solo enumerará los puertos reenviados que realmente están siendo utilizados por otro programa (en este caso, acabo de hacerlo telnet localhost 2222en mi máquina local para reenviarlo) remotehost.

Si no tiene ninguna conexión que se esté reenviando actualmente, aún puede ver lo que su comando ssh está escuchando localmente usando el netstatcomando como este:

% netstat -tpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:2222          0.0.0.0:*               LISTEN      28995/ssh       
tcp6       0      0 ::1:2222                :::*                    LISTEN      28995/ssh       

Es netstatprobable que el comando también enumere otras cosas, pero lo que desea buscar en la salida es la PID/Programcolumna para buscar sshprocesos y la Local Addresscolumna que le mostrará qué puertos se están escuchando. En este ejemplo, está escuchando port 2222las interfaces IPv4 e IPv6 en mi máquina.

aculich
fuente
1
Gracias por esta respuesta, mi objetivo era agregar un script en /etc/update-motd.d/ para mostrar los puertos redirigidos a. Pero con el comando ~ # solo tengo puertos redirigidos en el servidor. Y el objetivo era mostrar (parte de la salida ssh -v): Conexiones locales a LOCALHOST: 5901 reenviado a la dirección remota 127.0.0.1:5900 Reenvío local escuchando en :: 1 puerto 5901. Parece imposible mostrar SOLO este cliente de 2 líneas lado.
slc66
Para las personas que vienen aquí en 2020+: netstatha quedado obsoleto a favor de ss.
ScumCoder