Jak poznać aktywne przekierowanie portów ssh

12

Skonfigurowałem ~/.ssh/configwiele przekierowań portów dla VNC z innym portem dla każdego serwera.

Czy istnieje polecenie, które może mi pomóc dowiedzieć się, do którego portu jest przekierowywane, gdy otwieram sesję SSH?

slc66
źródło

Odpowiedzi:

13

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.

aculich
źródło
1
Dzięki za tę odpowiedź, Moim celem było dodanie skryptu w /etc/update-motd.d/, aby wyświetlić przekierowane porty. Ale za pomocą polecenia ~ # mam przekierowane tylko porty na serwerze. A celem było wyświetlenie (część wyjścia ssh -v): Lokalne połączenia z LOCALHOST: 5901 przekazane na zdalny adres 127.0.0.1:5900 Lokalne przekazywanie nasłuchuje na :: 1 porcie 5901. Wydaje się niemożliwe wyświetlenie TYLKO tego 2-liniowego klienta bok.
slc66
Dla osób przyjeżdżających tutaj w 2020 roku: netstatzostał on przestarzały na korzyść ss.
ScumCoder