Services et serveurs

VNC : x11vnc pour prendre le contrôle du bureau à distance

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

bureau_distant





Introduction




Il peut être utile de prendre la main à distance sur un PC équipé de GNU/Linux pour aider un de nos amis dans la détresse, ou pour accéder à un ordinateur de la maison constamment allumé, sans écran.



Installation




On va installer donc le paquet x11vnc qui permet à un utilisateur de se connecter sur sa machine à distance à la manière de RDP sur Windows (Connexion Bureau à distance).



Sous Fedora/CentOS :

Code BASH :
yum install x11vnc


Sous Gentoo/Calculate Linux :

Code BASH :
emerge -qv x11vnc


Sous Mageia :

Code BASH :
urpmi x11vnc


Sous Ubuntu et dérivés :

Code BASH :
apt-get install x11vnc


Et voila, c'est installé !



Utiliser x11vnc




Générer un mot de passe




Pour protéger la prise de main à distance, il est recommandé de créer un mot de passe pour permettre la prise de main (où ******** est le mot de passe) :

Code BASH :
x11vnc -storepasswd "*******" ~/.vnc_passwd




Lancer le programme




En mode manuel




Pour lancer le serveur VNC, c'est en console, en session utilisateur :

Code BASH :
x11vnc -many -rfbauth ~/.vnc_passwd -xkb


Il est possible de placer dans son .bashrc un alias de manière à ne taper qu'un mot mnémotechnique :

Code BASH :
alias assistance='x11vnc -many -rfbauth ~/.vnc_passwd -xkb'


Faire Ctrl+C pour arrêter.



En mode automatique avec la session




Il est possible aussi de de faire démarrer x11vnc avec la session.

Pour cela, créer un raccourci vers la commande ci-dessus dans le gestionnaire de bureau utilisé.

Si le bureau ne possède pas l'option pour lancer le programme automatiquement dès l'ouverture de session, il est possible de créer un fichier .desktop dans ~/.config/autostart/ dont voici le contenu :

Code BASH :
[Desktop Entry]
Type=Application
Exec=x11vnc -many -rfbauth ~/.vnc_passwd -xkb -shared -bg
Hidden=false
NoDisplay=false
Name=x11vnc
Comment=Bureau à distance VNC
 


En mode automatique avec le système




Il est possible aussi de de faire démarrer x11vnc avec le système.

Pour cela, créer le fichier de mot de passe comme vu précédemment pour l'utilisateur root.

Ensuite créer le service qui va bien :

Avec OpenRC :

Code BASH :
nano /etc/local.d/01-vnc.start


Placer le code :

Code BASH :
#! /bin/bash
#Pause car parfois X pas encore lancé quand le service se lance
sleep 10
# Lancement du x11vnc
x11vnc -many -rfbauth /root/.vnc_passwd -xkb -shared -bg &


Et rendre le fichier exécutable :

Code BASH :
chmod +x /etc/local.d/01-vnc.start


Et s'assurer que le service local soit démarré :

Code BASH :
rc-update add local


Pour systemd :

Voir l'article http://www.linuxtricks.fr/wiki/systemd-les-commandes-essentielles#paragraph_creer-un-service-simple

Et modifier la ligne

Code BASH :
ConditionPathExists=/usr/bin/x11vnc


et

Code BASH :
ExecStart=/bin/sh -c 'sleep 10 ; x11vnc -many -rfbauth /root/.vnc_passwd -xkb -shared -bg &'


Si dans les 2 cas avec le service ça ne veut pas se lancer, il faut trouver le fichier d'authentification de X :

Code BASH :
ps -ef | grep auth
root      2975  2945  0 13:43 tty7     00:00:00 /usr/bin/X :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch




Et d'ajouter à la ligne de commande x11vnc cette authentification

Code BASH :
x11vnc -many -rfbauth /root/.vnc_passwd -xkb -shared -bg -auth /var/run/lightdm/root/:0 &






À noter




Le programme écoute sur le port 5900. Il faut penser à ouvrir le parefeu sur ce port en TCP

Si on souhaite accéder au bureau depuis Internet, il faut penser à effectuer une règle NAT sur le routeur du port choisi (bien souvent 5900) sur le port 5900 en TCP



-- Problèmes ---

Curseur mal affiché




Si le curseur est mal affiché, c'est possible de mettre l'option -cursor à la ligne de commande x11vnc :

Code BASH :
 -cursor arrow