VNC via un tunnel SSH

VNC via un tunnel SSH

En complément de l’article dans lequel j’expliquais comment accéder à un serveur VNC distant via une page web tunnelée via SSH, voici une autre solution au problème de l’accès sécurisé à distance sur VNC.

Ici point de navigateur web, on va utiliser l’outil classique xvncviewer pour accéder à distance au serveur VNC, mais en passant par le tunnel SSH sécurisé car chiffré.

Pour cela il suffit de taper la commande suivante sur la machine nomade distante :

ssh -x -e none -L 5902:127.0.0.1:5900 titi@toto.com

Cette commande ouvre une session ssh avec le serveur toto.com en se connectant sous l’identité de titi. Une fois donné le mot de passe, on se retrouve dans un shell ssh classique.

Sauf qu’on a en plus fait un forwarding entre le port local 5902 et le port distant 5900. Nous partons évidemment de l’hypothèse que le serveur SSH distant dispose aussi d’un serveur VNC lancé sur le port 5900.

Ainsi, toute connexion TCP attaquant le port local 5902 est envoyée via le tunnel SSH vers le port 5900 de serveur distant, c’est à dire sur le serveur VNC.

Pour utiliser cette connexion, il suffit d’ouvrir un autre shell sur le client nomade et d’y entrer la commande :

xvncviewer localhost:2

Cette commande va tenter de contacter un serveur VNC en local, sur le port 5902 (xvncviewer ajoutant tout seul 5900, qui est le port de base de VNC, au chiffre 2). Or le port local 5902 est maintenant relié par le tunnel ssh au port 5900 du serveur distant. Et donc la magie opère : on se retrouve avec une connexion client – serveur VNC classique mais sécurisée par le fait qu’elle emprunte le tunnel SSH.

Bien sûr, tout cela fonctionne aussi avec le client ssh fourni maintenant en standard sous Windows.