VNC par tunnel SSH
Se connecter à un serveur VNC par un tunnel SSH
par Tayral
J'ai eu pas mal de difficultés à me connecter à un serveur vnc par un tunnel ssh, j'écrit donc ces quelques lignes pour les personnes que ca pourrait aider.
Introduction
Comme vous l'avez appris dans le tuto précédent, un serveur vnc permet de partager l'affichage graphique d'un pc (ou serveur), et d'executer des commandes sur cet ordinateur.
Le problème c'est que le dialogue s'effectue en clair entre le client et le serveur (authentification comprise), ce qui peut poser des problemes de securité ...
Pour résoudre le problème, une solution est d'ouvrir un tunnel ssh dans lequel toutes les communications sont cryptées.
Je vais seulement vous indiquer une configuration basique, si vous voulez plus de details, allez sur l'autre tuto (qui n'est pas de moi). Dans ce tuto le serveur ssh (openssh) tourne sous linux, le client sous windows (avec Tunnelier, client graphique).
Mise en place du tunnel ssh
Tout d'abord, pour creer un tunnel ssh, il faut un serveur ssh fonctionnel.
Il faut commencer par creer les paires de cle privees/publique :
1ere remarque : si vous utilisez le cryptage rsa, vous pouvez appeler vos cle comme vous voulez, mais pour la redirection de port coté serveur, la version de openssh vous oblige à utiliser id_rsa pour la clé privée et id_rsa.pub pour la clé publique (remarquez le suffixe pub ...).
Creation de la paire cle priivee / publique sur le serveur
1ere methode : Vous creez la paire de cle privee/publique nommée id_rsa et id_rsa.pub :
Une 'passphrase' vous est demandé, il s'agit d'un mot de passe qui protège votre cle privée. Ensuite vous devez apprendre au serveur votre cle publique :
Il ne vous reste plus qu'à copier la clé privée sur le pc du client.
Sur le serveur, j'ai stocké tous ces fichiers dans /root/.ssh
2e methode : Vous creez la paire de cle privee/publique avec le nom de votre choix :
Une 'passphrase' vous est demandé, il s'agit d'un mot de passe qui protège votre cle privée. Vous devez ensuite copiez la paire cle privee / publique dans un format que le serveur ssh comprend pour la redirection de port coté serveur (openssh versin 2) :
Ensuite vous devez apprendre au serveur votre cle publique :
Il ne vous reste plus qu'à copier la clé privée sur le pc du client.
Sur le serveur, ces fichiers sont stockés dans /root/.ssh
Se connecter en ssh au serveur
Pour se connecter au serveur avec un pc windows, avec le logiciel Tunnelier :
- Dans l'onglet login
Indiquer l'adresse ip de votre serveur dans le champ 'host'
- Dans l'onglet authentication
Indiquer le nom d'utilisateur : root
Pour indiquer au logiciel la clé privée que l'on utilise, cliquez sur le lien 'use keypair manager', puis ensuite sur 'import' et laissez vous guider ....
Vous pouvez maintenant selectionner 'publickey slot 1' dans 'Initial Method'.
Cliquez sur login, apres insertion de la 'passphrase', vous etes connecté en ssh.
Creer un tunnel SSH
Tout d'abord pour lancer le serveur vnc sur le serveur :
SI vous souhaitez arreter le serveur vnc :
Par defaut, la premiere session du serveur vnc s'execute sur le port 5901.
Pour creer un tunnel ssh, il y a une redirection de port coté client et coté serveur.
Commencons par configurer le client
Dans tunnelier, selectionner l'onglet 'c2s fwding', et creer une nouvelle regle :
- listen port : 5901
- listen interface : 127.0.0.1
- destination host : localhost
- destination port : 17000
pensez à selectionner la case 'accept server side port forwardings' (pour activer cette regle)
Ensuite connecter vous au serveur, et utilisez la commande suivante :
Apres cette commande, la 'passphrase' vous est demandé, et le tunnel ssh est crée.
Vous pouvez maintenant vous connecter au serveur vnc par ce tunnel, avec le logiciel vncviwer (sous windows toujours), en configurant le port sur 5901, et le host sur 'localhost :1' (sans les apostrophes).
Voilà, donc vous pouvez vous connecter par ce tunnel ssh par le reseau local, ou par le wan, mais dans ce cas il faut ouvrir le port 17000 (pour les appels entrants) dans le firewall.
Remarque : le port 17000 est competement aléatoire, vous pouvez utiliser ce que vous voulez, mais evitez quand meme les ports 21, 80 ... Pour ne pas entrer en conflit avec d'autres applications.