Wie man aktive SSH-Port-Weiterleitung kennt

12

Ich habe in ~/.ssh/configvielen Portweiterleitungen für VNC unterschiedliche Ports für jeden Server konfiguriert .

Gibt es einen Befehl, mit dem ich feststellen kann, an welchen Port beim Öffnen einer SSH-Sitzung weitergeleitet wird?

slc66
quelle

Antworten:

13

Wenn Sie die -vOption verwenden, sshwird angezeigt, was Sie weiterleiten (es werden jedoch auch eine Reihe anderer Debug-Meldungen angezeigt):

ssh -v -L2222:localhost:22 remotehost

Wird dir zeigen:

...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...

Wenn Sie dann mit dieser Remote-Shell verbunden sind, können Sie eine spezielle Tastenfolge eingeben:

~#

Hier werden die Verbindungen wie folgt aufgelistet:

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)

Beachten Sie jedoch, dass hier nur weitergeleitete Ports aufgelistet werden, die tatsächlich von einem anderen Programm verwendet werden (in diesem Fall habe ich es gerade telnet localhost 2222auf meinem lokalen Computer getan , um es weiterleiten zu lassen remotehost.

Wenn Sie keine Verbindungen haben, die gerade weitergeleitet werden, können Sie mithilfe des folgenden netstatBefehls immer noch sehen, worauf Ihr ssh-Befehl lokal wartet :

% 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       

Der netstatBefehl listet wahrscheinlich auch andere Dinge auf, aber was Sie in der Ausgabe suchen möchten, ist die PID/ProgramSpalte, in der nach sshProzessen gesucht werden soll, und die Local AddressSpalte , in der angezeigt wird, welche Ports abgehört werden. In diesem Beispiel werden port 2222sowohl IPv4- als auch IPv6-Schnittstellen auf meinem Computer überwacht.

aculich
quelle
1
Vielen Dank für diese Antwort. Mein Ziel war es, ein Skript in /etc/update-motd.d/ hinzuzufügen, um die umgeleiteten Ports anzuzeigen. Aber mit dem Befehl ~ # habe ich nur Ports auf dem Server umgeleitet. Das Ziel war die Anzeige (Teil der ssh -v-Ausgabe): Lokale Verbindungen zu LOCALHOST: 5901, weitergeleitet an die Remote-Adresse 127.0.0.1:5900 Lokale Weiterleitung, die auf :: 1 Port 5901 lauscht. Es scheint unmöglich, NUR diesen 2-Zeilen-Client anzuzeigen Seite.
slc66