Como saber ativa o encaminhamento de porta ssh

12

Eu configurei em ~/.ssh/configmuitas portas o encaminhamento para VNC com porta diferente para cada servidor.

Existe um comando que pode me ajudar a saber para qual porta está encaminhando quando eu abro uma sessão SSH?

slc66
fonte

Respostas:

13

Se você usar a -vopção, sshele mostrará o que você está encaminhando (mas também mostrará várias outras mensagens de depuração):

ssh -v -L2222:localhost:22 remotehost

Irá mostrar-lhe:

...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...

E então, quando você estiver conectado a esse shell remoto, poderá digitar uma sequência de teclas especial:

~#

que listará as conexões como esta:

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)

Observe, no entanto, que isso listará apenas as portas encaminhadas que realmente estão sendo usadas por outro programa (nesse caso, acabei de fazer telnet localhost 2222na minha máquina local para que ela seja encaminhada remotehost.

Se você não possui nenhuma conexão que está sendo encaminhada no momento, ainda pode ver o que seu comando ssh está ouvindo localmente usando o netstatcomando da seguinte maneira:

% 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       

O netstatcomando provavelmente também listará outras coisas, mas o que você deseja procurar na saída é a PID/Programcoluna para procurar sshprocessos e a Local Addresscoluna que mostrará quais portas estão sendo ouvidas. Neste exemplo, ele está ouvindo port 2222as interfaces IPv4 e IPv6 na minha máquina.

aculich
fonte
1
Obrigado por esta resposta, meu objetivo era adicionar scripts no /etc/update-motd.d/ para exibir as portas redirecionadas. Mas com o comando ~ # eu tenho apenas portas redirecionadas no servidor. E o objetivo era exibir (parte da saída ssh -v): Conexões locais para LOCALHOST: 5901 encaminhadas para o endereço remoto 127.0.0.1:5900 Encaminhamento local escutando na :: 1 porta 5901. Parece impossível exibir SOMENTE este cliente de 2 linhas lado.
slc66
Para as pessoas que vêm aqui em 2020 ou mais: netstatfoi obsoleta a favor de ss.
ScumCoder 04/03