Как узнать активы пересылки по ssh порту

12

Я настроил ~/.ssh/configпереадресацию многих портов для VNC с разными портами для каждого сервера.

Есть ли команда, которая может помочь мне узнать, на какой порт выполняется переадресация при открытии сеанса SSH?

slc66
источник

Ответы:

13

Если вы используете -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 на моей машине.

aculich
источник
1
Спасибо за этот ответ. Моя цель состояла в том, чтобы добавить скрипт в /etc/update-motd.d/ для отображения перенаправленных портов. Но с помощью команды ~ # у меня есть только порты, перенаправленные на сервер. И целью было показать (часть вывода ssh -v): Локальные соединения с LOCALHOST: 5901 переадресован на удаленный адрес 127.0.0.1:5900 Прослушивание локальной переадресации на порт :: 1 порта 5901. Кажется невозможным отобразить ТОЛЬКО этот двухстрочный клиент боковая сторона.
slc66
Для людей, приезжающих сюда в 2020+: netstatустарел в пользу ss.
ScumCoder