Services et serveurs

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

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 https://www.linuxtricks.fr/wiki/systemd-creer-des-services-timers-unites

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 
Cette page a été vue 45828 fois