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