Respostas:
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.
netstatfoi obsoleta a favor de ss.