En fait faut voir ça comme un proxy qui n’a qu’une seule IP:PORT de sortie (ce qui n’empêche pas de faire transiter plusieurs connexions simultanées). Super simple à utiliser quand tu as déjà un SSH fonctionnel :
$ ssh -N -L 3305:localhost:3306 user@example.com
(authentification)
(reste bloqué, arrêter avec Ctrl+C)
Dans un autre terminal toujours sur ta machine cliente :
$ netstat -taupn | grep 3305
tcp 0 0 127.0.0.1:3305 0.0.0.0:* LISTEN 27241/ssh
De la même manière, tu peux aussi ramener un port local sur le serveur avec -R au lieu de -L.
À noter que dans la commande de forwarding, le nom d’hôte (ici localhost) est interprété tel que vu du serveur (en l’occurrence, il s’agit donc bien sûr du serveur lui-même, mais tu pourrais tout aussi bien indiquer un nom d’hôte que seul le serveur connaît car renseigné uniquement dans son /etc/hosts ; ou une IP du LAN du serveur si tu veux, bref, tu vois le truc).
(j’ai mis 3305 côté client pour qu’il n’y ait pas de confusion et que ça soit simple à comprendre, mais rien ne t’empêche de mettre le même numéro de port des deux côtés, c’est d’ailleurs ce que je fais quasiment toujours)