Comment démarrer un serveur vnc pour l’affichage réel (scraping) avec TigerVNC

VNC est une application de partage de bureau (Virtual Network Computing) permettant de se connecter et de contrôler le bureau d’un ordinateur (distant ou local) via une connexion réseau.

Cependant, sur les systèmes linux, de nombreuses applications de serveur VNC permettent uniquement de se connecter à un bureau virtuel et non au bureau réel. Ce howto t’offre une solution, pour te connecter via le serveur TigerVNC à la session active réelle sur ton bureau Linux.

Exigences

  • Un environnement de bureau linux entièrement fonctionnel
  • privilège root (pour installer le serveur TigerVNC)
  • connaissances de base du shell linux

Afin d’obtenir les derniers paquets, tu peux faire une mise à jour.

[email protected]:~$ sudo apt-get update

Ce guide a été testé sur Debian/GNU Linux 9.5 (stretch) et Ubuntu 18.04.

Installer TigerVNC

Tout d’abord, tu dois installer le serveur TigerVNC.

[email protected]:~$ sudo apt-get install tigervnc-scraping-server

Note que sur la plupart des systèmes basés sur Debian, il existe un petit paquet appelé tigervnc-scraping-server, que tu dois installer. Tu n’as pas besoin d’installer le serveur TigerVNC principal (nom du paquet : tigervnc-standalone-server) pour avoir la fonctionnalité de te connecter à la session de bureau en cours, seulement si tu préfères te connecter à un bureau virtuel aussi.

Le serveur TigerVNC fournit une application plus petite (x0vncserver) pour accorder l’accès à la session active.

Ensuite, crée un répertoire .vnc dans ton domicile :

[email protected]:~$ mkdir -p ~/.vnc

Crée un mot de passe pour ta session vnc :

[email protected]:~$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

Démarrer le serveur VNC

Une courte description du x0vncserver :

x0tigervncserver is a TigerVNC Server which makes any X display remotely accessible via VNC, TigerVNC or compatible viewers. Unlike Xvnc(1), it does not create a virtual display. Instead, it just shares an existing X server (typically, that one connected to the physical screen).

Maintenant que tu as réussi à installer le serveur TigerVNC sur ton ordinateur, que tu as créé un mot de passe avec la commande vncpasswd, nous pouvons commencer à démarrer notre serveur vnc. Assure-toi que tu es sur la session active, et que tu écris (en tant qu’utilisateur) :

[email protected]:~$ x0vncserver -passwordfile ~/.vnc/passwd -display :0

Wed Oct 10 22:17:16 2018
Geometry: Desktop geometry is set to 1920x1080+0+0
Main: XTest extension present - version 2.2
Main: Listening on port 5900

L’option -passwordfile ~/.vnc/passwd lit le fichier de mots de passe créé précédemment avec la commande vncpasswd. La deuxième option -display :0 signifie que tu veux te connecter à la session sur l’écran :0, qui est généralement la session active.

Tu peux maintenant accéder à ton bureau réel avec n’importe quelle application de visualisation vnc sur le port vnc 5900 par défaut.

Tu peux arrêter ce processus quand tu veux en appuyant sur Ctrl-c.

Si tu souhaites l’exécuter en arrière-plan, tape :

[email protected]:~$ x0vncserver -passwordfile ~/.vnc/passwd -display :0 >/dev/null 2>&1 &

Maintenant, toutes les sorties standard et les erreurs sont redirigées vers /dev/null et avec le & à la fin, il fonctionnera en arrière-plan. Cependant, tu ne pourras plus arrêter le serveur vnc en appuyant sur Ctrl-c, mais tu devras tuer son identifiant de processus (voir la section ci-dessous « Arrêter le serveur vnc »).

Pour plus d’options et de syntaxe, consulte le manuel de x0vncserver.

Arrêter le serveur VNC

Si ton serveur vnc fonctionne en arrière-plan, tu dois connaître l’id du processus pour pouvoir l’arrêter.

[email protected]:~$ ps -fu user | grep [x]0vncserver
user    1328    1   0 23:11 pts/2    00:00:00    /usr/bin/x0vncserver -display :0 -passwordfile /home/user/.vnc/passwd -rfbport 5900

La sortie sera comme ceci, remarque le pid 1328. Afin d’arrêter le serveur vnc, nous devons « tuer » ce processus.

[email protected]:~$ kill -9 1328

L’option -9 de la commande kill enverra le signal KILL à l’id du processus pour s’assurer qu’il s’arrête.

Script pour lancer le serveur VNC

Il existe un script pour démarrer et arrêter l’application x0vncserver sur github. À des fins de test, tu peux aussi télécharger le paquet psmisc :

[email protected]:~$ sudo apt-get install git psmisc

Ensuite, télécharge le script startvnc à l’aide de la commande git :

[email protected]:~$ git clone https://github.com/sebestyenistvan/runvncserver
Cloning into 'runvncserver'...
remote: Enumerating objects: 77, done.
remote: Counting objects: 100% (77/77), done.
remote: Compressing objects: 100% (57/57), done.
remote: Total 77 (delta 25), reused 60 (delta 18), pack-reused 0
Unpacking objects: 100% (77/77), done.

Ta sortie ressemblera à quelque chose comme ci-dessus.

Copie le script startvnc du répertoire runvncserver à ton domicile :

[email protected]:~$ cp ~/runvncserver/startvnc ~

Change les permissions en exécutable, afin d’exécuter le script :

[email protected]:~$ chmod +x ~/startvnc

Ensuite, exécute le script.

[email protected]:~$ ./startvnc

Usage: ./startvnc start|stop|restart|status

Ce script ne fonctionnera que si tu as un répertoire .vnc chez toi et si tu as créé un vncpasswd (il vérifie le fichier ~/.vnc/passwd). Nous avons déjà créé le répertoire .vnc et le mot de passe plus tôt.

Pour démarrer le serveur vnc sur l’écran actuel, il suffit de taper :

[email protected]:~$ ./startvnc start
Starting VNC Server on display :0 [ok]

Tu peux tester, si ton serveur vnc fonctionne avec l’option :

[email protected]:~$ ./startvnc status
Status of the VNC server: [running] (pid: 1328)

Quelques exemples :

Utiliser TigerVNC

Ou en vérifiant le port TCP 5900 sur ton système avec la commande fuser (du paquet psmisc) :

[email protected]:~$ fuser -vn tcp 5900
                  USER      PID     ACCESS      COMMAND
5900/tcp:         user      1328    F....       x0vncserver

Tu obtiendras un résultat comme celui-ci si le serveur vnc fonctionne sur le port 5900.

Vérifier le port avec la commande fuser

Tu trouveras d’autres instructions pour ce script dans le fichier readme :

[email protected]:~$ less runvncserver/README.md

Le script créera un fichier journal, où la sortie est stockée. Si quelque chose ne va pas ou si tu ne peux pas démarrer ou arrêter le x0vncserver, jette un coup d’œil au fichier journal sous ~/.vnc/logfile.

Démarre le serveur VNC automatiquement

Si tu veux accéder automatiquement à la session active du bureau, tu dois modifier le fichier .xsessionrc dans ton répertoire personnel.

[email protected]:~$ echo "/home/user/startvnc start >/dev/null 2>&1" >> ~/.xsessionrc

Remplace user par ton nom d’utilisateur et il s’exécutera automatiquement au démarrage de la session X. Le script consigne son activité dans ~/.vnc/logfile, si quelque chose ne va pas, tu peux vérifier le fichier journal à cet endroit.

Démarrage automatique du serveur VNC

Notes

Ce tutoriel ne traite pas de la configuration d’un bureau virtuel VNC.

Sécurité

Sache que le x0vncserver n’utilise pas de cryptage par défaut, alors utilise-le avec précaution sur Internet. Si tu veux l’utiliser à distance, tu peux le tunneliser via ssh. Cependant, il existe d’autres howtos où tu peux trouver une solution pour crypter ta session VNC.

Tu peux aussi jeter un coup d’œil au paquet ssvnc.

Visionneuses VNC

Si tu cherches des visionneuses VNC, il y en a beaucoup, par exemple :

  • gvncviewer
  • tigervnc-viewer
  • xtightvncviewer
  • xvnc4viewer

Géométrie

Le x0vncserver sur l’écran réel utilisera la même géométrie que le bureau en cours d’exécution sur l’écran :0. Donc si tu définis l’option -geometry à une taille inférieure, il ne sera pas mis à l’échelle, tu verras juste une fraction de la taille du bureau.

Commentaires

N’hésite pas à écrire tes commentaires. Si tu as testé ce tutoriel ou même le script sur un autre système.

Bureau partagé via VNC

Vous aimerez aussi...