Ответы:
Если вы используете -v
опцию, ssh
она покажет вам, что вы пересылаете (но она также покажет вам кучу других отладочных сообщений):
ssh -v -L2222:localhost:22 remotehost
Покажет вам:
...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...
И затем, когда вы подключитесь к этой удаленной оболочке, вы можете набрать специальную последовательность клавиш:
~#
который будет перечислять соединения, как это:
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)
Обратите внимание, однако, что в этом списке будут только перенаправленные порты, которые фактически используются другой программой (в этом случае я только что сделал telnet localhost 2222
на своей локальной машине, чтобы переадресовать его remotehost
.
Если у вас нет подключений, которые в данный момент пересылаются, вы все равно можете увидеть, что ваша команда ssh ожидает локально, используя следующую netstat
команду:
% 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
Команда netstat
также, вероятно, перечислит другие вещи, но в выходных данных вы хотите найти PID/Program
столбец для поиска ssh
процессов и Local Address
столбец, который покажет вам, какие порты прослушиваются. В этом примере он прослушивает port 2222
интерфейсы IPv4 и IPv6 на моей машине.
netstat
устарел в пользу ss
.