Qu'est ce qu'un tunnel ssh ?

Un tunnel ssh est un conduit qui permet de faire transiter tout ce que l'on veut à travers ssh.

Voici un schema explicatif :

Pourquoi utiliser un tunnel ssh ?

L'intérêt principal est la sécurité. Seul le port 22 est écoute par le serveur en question (ssh est crypté et sécurisé). D'autre part (intérêt pour le fainéant) en utilisant des tunnels ssh ça vous permet de ne pas ouvrir des ports pour tout et n'importe quoi.

Comment le mettre en place ?

ssh -L port_local:localhost:port_sur_le_serveur -XC user@serveur

Exemples : 

pour VNC (port 5900) :

ssh -L 5900:localhost:5900 -XC me@example.com

pour SVN (port 3690) :

ssh -L 3690:localhost:3690 -XC me@example.com

Une fois le tunnel ssh ouvert vous pouvez sur votre poste faire comme si le service et sur localhost. Donc pour pouvez vous connecter avec vinagre (client VNC) sur localhost pour prendre la main sur example.com :

vinagre localhost:5900

D'une manière générale, si vous configurez vino (VNC server) pour écouter sur le port 5987 vous pourrez faire :

ssh -L Y:localhost:5987 -XC me@example.com

vinagre localhost:Y

Y étant un port quelconque n'étant pas déjà utilisé par localhost.

Sur windows y a pas de soucis vous pouvez ouvrir votre tunnel ssh en utilisant putty. (voir le Wiki de korben pour la config de putty : http://free.korben.info/index.php/Tunnel_SSH)

Il est également possible de changer le port de ssh...