Odpowiedzi:
Jeśli użyjesz tej -vopcji ssh, pokaże ci to, co przekazujesz dalej (ale pokaże też kilka innych wiadomości debugowania):
ssh -v -L2222:localhost:22 remotehost
Pokaże Ci:
...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...
A następnie, gdy jesteś podłączony do tej zdalnej powłoki, możesz wpisać specjalną sekwencję klawiszy:
~#
która wyświetli listę takich połączeń:
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)
Zauważ jednak, że będzie to tylko lista portów, które są faktycznie używane przez inny program (w tym przypadku właśnie zrobiłem telnet localhost 2222na moim komputerze lokalnym, aby go przekierować) remotehost.
Jeśli nie masz żadnych połączeń, które są obecnie przekazywane, nadal możesz zobaczyć, czego lokalnie oczekuje twoje polecenie ssh, używając następującego netstatpolecenia:
% 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
netstatKomenda będzie prawdopodobnie również listę innych rzeczy, ale to, co chcesz szukać w wyjścia jest PID/Programkolumna szukać sshprocesów, a Local Addresskolumna, która pokaże, jakie porty są słuchał. W tym przykładzie nasłuchuje port 2222zarówno interfejsów IPv4, jak i IPv6 na moim komputerze.
netstatzostał on przestarzały na korzyść ss.