Ceci est une ancienne révision du document !



Tunneliser une connexion VNC via SSH

Le tutoriel ci-dessous va vous permettre de prendre le contrôle d'une machine distante via ssh. Nous créerons à cet effet un lanceur qui sera inclus dans le menu principal. L'intérêt de l'utilisation de xvnc4viewer en lieu et place de vinagre (inclus dans ubuntu depuis 8.04) est l'option -via. Celle-ci permet à vncviewer de se connecter directement en SSH. Cette méthode permet de sécuriser l'accès VNC classique hautement intrusif de l'extérieur.

On doit d'abord créer les clés sur le ou les postes clients avant de les exporter sur le ou les ordinateurs auxquels on veut accéder. Voir : authentification_par_un_systeme_de_cles_publiqueprive

paquets nécessaires pour ce tutoriel:

sur le poste client:

sur le poste serveur


La méthode de connexion SSH choisie pour ce tutoriel est celle de l'Authentification par clé publique/privée. De cette manière, il faut être en possession de non plus une mais de deux informations pour se connecter (avoir la clé privée & connaître le mot de passe de cette clé). Le type de clé utilisée ici est de type dsa 1024 bits.

Ceci peut permettre par exemple :

  • à un admin de se connecter à des centaines de machines sans devoir connaître des centaines de mots de passe différents ;
  • de ne pas avoir un mot de passe à saisir toutes les 2 minutes (en utilisant ssh-agent).
Au mois de Mai 2008 a été découvert une faiblesse dans la génération des clés par OpenSSL des packages Debian et dérivés tels qu'Ubuntu. Si vous avez généré vos clés sur Ubuntu entre 2006 et Mai 2008, il faut régénérer de nouvelles clés après avoir mis a jour le système…

À moins que vous n'ayez déjà un couple de clés, vous devez d'abord en créer. Tapez :

ssh-keygen -t dsa

Il vous sera alors demandé où sauver la clé privée (acceptez juste l'endroit par défaut, et ne changez pas le nom par défaut) puis de choisir une passphrase. La passphrase est employée pour chiffrer votre clé privée. Toute personne qui obtiendrait l'accès à votre clé privée (non protégée) aurait vos permissions sur d'autres ordinateurs. Veuillez prendre un instant et choisissez une très bonne passphrase.

Votre clef publique a été créée avec la nouvelle clé privée. Elles sont localisées dans le dossier caché « ~/.ssh/id_dsa.pub »(clé publique) et « ~/.ssh/id_dsa »(clé privée) .

Cette clé privée ne doit jamais être divulguée en dehors du poste client. Elle est la seule garante de la sécurité de votre liaison SSH. Seule la clé publique doit être distribuée sur les postes auxquels vous souhaitez accéder.

Fichier de configuration SSH-client

Editez le fichier de configuration SSH client :

gksudo gedit /etc/ssh/ssh_config

Décocher le # présent devant PasswordAuthentication et passer la valeur à no (ceci exclut l'authentification par mot de passe). Faîtes de même avec Protocol pour qu'il ne reste que Protocol 2 (le protocole 1 des clés RSA ou DSA est à proscrire car moins sécurisé)

Relancez le client SSH afin de prendre en compte les modifications avec la commande:

sudo /etc/init.d/ssh restart

Installation de xvnc4viewer

Enregistrez sur le ou les postes auxquels vous souhaitez accéder la clé publique copiée de votre fichier caché « ~/.ssh/id_dsa.pub ». Vous devez l'enregistrer dans le fichier caché « ~/.ssh/ » du poste serveur. Puis renommez sur le poste serveur ce fichier en authorized_keys2 (le 2 signifie qu'on souhaite bénéficier du protocole SSH2). Vous vous retrouvez alors avec le fichier caché « ~/.ssh/authorized_keys2 »

Le fichier authorized_keys2 doit comporter la clé publique SSH sur une seule ligne. Veuillez ouvrir ce fichier dans l'éditeur (sudo gedit ~/.ssh/authorized_keys2) et assurez vous que la clé tient sur une seule ligne. Si ce n'est pas le cas veillez à décocher la case "activer le retour à la ligne" dans édition/préférences onglet affichage de l'éditeur. Puis enregistrez et fermez la fenêtre.

Vous pouvez diffuser cette clé par le moyen de votre choix (copie par clé usb, envoi email…)

Editez le fichier SSH-serveur:

gksudo gedit /etc/ssh/sshd_config
  • Mettez PermitRootLogin no (à vous de voir mais le laisser sur yes peut permettre toutes les modifications possibles)
  • et AuthorizedKeysFile /home/[nom_d'utilisateur]/.ssh/authorized_keys2

Dans système/préférences/applications au démarrage entrez une nouvelle valeur que vous appelerez par exemple vncserveur. Donnez lui comme valeur (en construction…)

Sur le poste client il ne vous reste plus qu'à taper dans un terminal

  • ssh -L 5901:localhost:5900 [adresse poste serveur]
  • dans un nouvel onglet xvnc4viewer 127.0.0.1:5901
Il est inutile de laisser le serveur vnc activé tout le temps, si le but est de ne l'utiliser que par ssh. Plutôt que d'ajouter une application au démarrage, utilisez la méthode suivante: connectez vous au serveur avec la ligne suivante:
 ssh -X -L 5901:localhost:5900 [adresse poste serveur]

depuis le serveur lancez x11vnc:

sudo x11vnc -display :0

et enfin dans un nouvel onglet (donc sur le client):

xvnc4viewer 127.0.0.1:5901

Un message doit vous demander sur le poste serveur si vous autorisez la prise de contrôle…

contributeurs: djoser,

  • ssh_vnc.1394656146.txt.gz
  • Dernière modification: Le 12/03/2014, 21:29
  • par cartmeleon