Comment connaître la redirection de port ssh active

12

J'ai configuré de ~/.ssh/confignombreux ports de transfert pour VNC avec un port différent pour chaque serveur.

Existe-t-il une commande qui peut m'aider à savoir vers quel port est redirigé lorsque j'ouvre une session SSH?

slc66
la source

Réponses:

13

Si vous utilisez l' -voption, sshil vous montrera ce que vous transférez (mais il vous montrera également un tas d'autres messages de débogage):

ssh -v -L2222:localhost:22 remotehost

Vous montrera:

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

Et puis, lorsque vous êtes connecté à ce shell distant, vous pouvez taper une séquence de touches spéciale:

~#

qui listera les connexions comme ceci:

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)

Notez cependant que cela ne listera que les ports redirigés qui sont réellement utilisés par un autre programme (dans ce cas, je viens de le faire telnet localhost 2222sur ma machine locale pour le faire rediriger vers remotehost.

Si vous n'avez aucune connexion en cours de transfert, vous pouvez toujours voir ce que votre commande ssh écoute localement en utilisant la netstatcommande comme ceci:

% 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       

La netstatcommande listera également probablement d'autres choses, mais ce que vous voulez rechercher dans la sortie est la PID/Programcolonne pour rechercher les sshprocessus et la Local Addresscolonne qui vous montrera quels ports sont écoutés. Dans cet exemple, il écoute port 2222les interfaces IPv4 et IPv6 sur ma machine.

aculich
la source
1
Merci pour cette réponse, mon objectif était d'ajouter un script dans /etc/update-motd.d/ pour afficher les ports redirigés vers. Mais avec la commande ~ #, seuls les ports sont redirigés sur le serveur. Et le but était d'afficher (une partie de la sortie ssh -v): Connexions locales à LOCALHOST: 5901 transférées à l'adresse distante 127.0.0.1:5900 Écoute de transfert local sur :: 1 port 5901. Il semble impossible d'afficher UNIQUEMENT ce client de 2 lignes côté.
slc66
Pour les personnes venant ici en 2020+: netstata été obsolète en faveur de ss.
ScumCoder