Come conoscere il port forwarding ssh di active


12

Ho configurato in ~/.ssh/configmolti port forwarding per VNC con porta diversa per ogni server.

Esiste un comando che può aiutarmi a sapere a quale porta viene inoltrato quando apro una sessione SSH?

Risposte:


13

Se usi l' -vopzione per sshmostrarti cosa stai inoltrando (ma ti mostrerà anche un sacco di altri messaggi di debug):

ssh -v -L2222:localhost:22 remotehost

Ti mostrerà:

...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 poi quando sei connesso a quella shell remota puoi digitare una sequenza di tasti speciale:

~#

che elencherà le connessioni in questo modo:

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)

Si noti, tuttavia, che questo elencherà solo le porte inoltrate che vengono effettivamente utilizzate da un altro programma (in questo caso ho appena fatto telnet localhost 2222sul mio computer locale per averlo inoltrato remotehost.

Se non si dispone di alcuna connessione attualmente inoltrata, è ancora possibile vedere ciò che il comando ssh sta ascoltando localmente utilizzando il netstatcomando in questo modo:

% 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       

Il netstatcomando probabilmente elencherà anche altre cose, ma ciò che vuoi cercare nell'output è la PID/Programcolonna per cercare i sshprocessi e la Local Addresscolonna che ti mostrerà quali porte vengono ascoltate. In questo esempio è in ascolto port 2222per entrambe le interfacce IPv4 e IPv6 sulla mia macchina.


1
Grazie per questa risposta, il mio obiettivo era quello di aggiungere lo script in /etc/update-motd.d/ per visualizzare le porte reindirizzate. Ma con il comando ~ # ho solo le porte reindirizzate sul server. E l'obiettivo era visualizzare (parte dell'output ssh -v): connessioni locali a LOCALHOST: 5901 inoltrato all'indirizzo remoto 127.0.0.1:5900 Inoltro locale in ascolto su :: 1 porta 5901. Sembra impossibile visualizzare SOLO questo client a 2 righe lato.
slc66,

Per le persone che vengono qui nel 2020+: netstatè stato obsoleto a favore di ss.
ScumCoder
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.