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 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. Pour réaliser une telle connexion, il faudra :
- Enfin configurer le poste serveur.
Création d'une paire de clefs sur le poste client
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. Pour cela reportez-vous au paragraphe sur les clés de la page ssh.
Configuration du poste client
Installez les paquets xvnc4viewer et openssh-client (ce dernier est normalement installé par défaut sous ubuntu).
Editez le fichier de configuration SSH client /etc/ssh/ssh_config avec les droits d'administration et enlever 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
Sous Windows côté client avec PUTTY
Une solution simple et efficace existe sous Windows afin de prendre en main une machine Ubuntu, le tout via un tunnel SSH.
Les manipulations sont les mêmes pour la machine à contrôler, les changements interviennent seulement sur la machine qui contrôle (dans mon cas sous Windows XP).
- Télécharger le logiciel PUTTY permettant l'accès à la console en SSH.
- Démarrez Putty, entrez l'adresse sur laquelle vous voulez vous connecter (IP publique ou nom de domaine, pour en ouvrir un gratuit voyez la page sur les DNS dynamiques).
- Choisissez SSH en 'Connexion Type'. Sur la gauche de l'écran rendez vous dans l'onglet 'SSH', puis 'Tunnel':
- en 'source port', ajoutez
59005901 - en 'destination', ajoutez 127.0.0.1:5900
- Cochez éventuellement sous SSH « Enable Compression ».
- Sauvegarder votre profil.
VNC ⇐ 5900 (local) ⇒ Putty ⇐ 22 (distant) ⇒ machine_a_controler
Diffusion de la clé publique sur le poste serveur
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.
Vous pouvez diffuser cette clé par le moyen de votre choix (copie par clé usb, envoi email…)
Configuration du poste serveur et prise à distance via vnc
Installez les paquets x11vnc et openssh-server
Éditez le fichier de configuration SSH serveur /etc/ssh/sshd_config avec les droits d'administration et 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
Ajouter tout ça aux applications au démarrage.
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
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,