Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

Chapitre 11. TigerVNC

TigerVNC (de l'anglais, « Tiger Virtual Network Computing ») est un système pour le partage de bureau graphique vous permettant de contrôler d'autres ordinateurs à distance.
TigerVNC fonctionne sur le principe client-serveur : un serveur partage sa sortie (vncserver) et un client (vncviewer) se connecte au serveur.

Note

Contrairement aux distributions précédentes de Red Hat Enterprise Linux, sur Red Hat Enterprise Linux 7 TigerVNC utilise le démon de gestion de systèmes systemd pour sa configuration. Le fichier de configuration /etc/sysconfig/vncserver a été remplacé par /etc/systemd/system/vncserver@.service.

11.1. Serveur VNC

vncserver est un utilitaire qui lance un bureau VNC (Virtual Network Computing). Il exécute Xvnc avec les options appropriées et lance un gestionnaire de fenêtre sur le bureau VNC. vncserver autorise les utilisateurs à exécuter des sessions séparées en parallèle sur une machine qui peut ensuite être accédée par un nombre illimité de clients, quelle que soit leur origine.

11.1.1. Installer un serveur VNC

Pour installer le serveur TigerVNC, veuillez exécuter la commande suivante en tant qu'utilisateur root :
~]# yum install tigervnc-server

11.1.2. Configurer un serveur VNC

Le serveur VNC peut être configuré pour lancer un affichage pour un ou plusieurs utilisateurs, à condition que les comptes de ces utilisateurs existent sur le système, avec des paramètres optionnels comme les paramètres d'affichage, l'adresse et le port réseau, et les paramètres de sécurité.

Procédure 11.1. Configurer un affichage VNC pour un utilisateur unique

  1. Un fichier de configuration nommé /etc/systemd/system/vncserver@.service est requis. Pour créer ce fichier, copiez le fichier /usr/lib/systemd/system/vncserver@.service en tant qu'utilisateur root :
    ~]# cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service
    Il n'est pas nécessaire d'inclure le numéro d'affichage dans le nom du fichier car systemd crée automatiquement l'instance nommée de manière appropriée en mémoire à la demande, en remplaçant '%i' dans le fichier du service par le numéro d'affichage. Pour un utilisateur unique, il n'est pas nécessaire de renommer le fichier. Pour de multiples utilisateurs, un fichier de service nommé de manière unique est requis pour chaque utilisateur, par exemple, en ajoutant le nom d'utilisateur au nom du fichier. Veuillez consulter Section 11.1.2.1, « Configurer un serveur VNC pour deux utilisateurs » pour obtenir plus de détails.
  2. Modifiez /etc/systemd/system/vncserver@.service, en remplaçant USER par le nom de l'utilisateur. Veuillez laisser les lignes restantes du fichier intactes. L'argument -geometry spécifie la taille du bureau VNC à créer. Par défaut, celle-ci est définie sur 1024x768.
    ExecStart=/usr/sbin/runuser -l USER -c "/usr/bin/vncserver %i -geometry 1280x1024"
    PIDFile=/home/USER/.vnc/%H%i.pid
    
  3. Enregistrez les changements.
  4. Pour que les changements entrent en vigueur immédiatement, veuillez exécuter la commande suivante :
    ~]# systemctl daemon-reload
  5. Paramétrez le mot de passe de l'utilisateur (ou des utilisateurs) défini(s) dans le fichier de configuration. Remarquez que vous devrez d'abord passer de l'utilisateur root à utilisateur USER.
    ~]# su - USER
    ~]$ vncpasswd
    Password:
    Verify:

    Important

    Le mot de passe stocké n'est pas chiffré, toute personne ayant accès au fichier de mot de passe peut trouver le mot de passe en texte clair.

11.1.2.1. Configurer un serveur VNC pour deux utilisateurs

Si vous souhaitez configurer plus d'un utilisateur sur la même machine, veuillez créer différents fichiers de service de type modèle, un par utilisateur.
  1. Créez deux fichiers de service, par exemple vncserver-USER_1@.service et vncserver-USER_2@.service. Veuillez substituer USER dans ces deux fichiers par le nom d'utilisateur correct.
  2. Définissez les mots de passe pour les deux utilisateurs :
    ~]$ su - USER_1
    ~]$ vncpasswd
    Password:
    Verify:
    ~]$ su - USER_2
    ~]$ vncpasswd
    Password:
    Verify:

11.1.3. Lancer le serveur VNC

Pour lancer ou activer le service, spécifiez le numéro d'affichage directement dans la commande. Le fichier configuré ci-dessus dans Procédure 11.1, « Configurer un affichage VNC pour un utilisateur unique » sert de modèle, dans lequel %i est remplacé par le numéro d'affichage par systemd. Avec un numéro d'affichage valide, exécutez la commande suivante :
~]# systemctl start vncserver@:display_number.service
Vous pouvez également autoriser le service à être lancé automatiquement lors du démarrage système. Puis, une fois connecté, vncserver est automatiquement lancé. En tant qu'utilisateur root, veuillez exécuter une commande comme suit :
~]# systemctl enable vncserver@:display_number.service
À ce moment, d'autres utilisateurs sont en mesure d'utiliser un programme visionneur VNC pour se connecter au serveur VNC en utilisant le numéro d'affichage et le mot de passe défini. À condition qu'un bureau graphique soit installé, une instance de ce bureau sera affichée. Il ne s'agira pas de la même instance que celle qui est actuellement affichée sur la machine cible.

11.1.3.1. Configurer un serveur VNC pour deux utilisateurs et deux affichages différents

Pour les deux serveurs VNC configurés, vncserver-USER_1@.service et vncserver-USER_2@.service, vous pouvez activer différents numéros d'affichage. Par exemple, les commande suivantes amèneront le serveur VNC de l'utilisateur USER_1 à être lancé sur l'affichage 3, et au serveur VNC de l'utilisateur USER_2 à être lancé sur l'affichage 5 :
~]# systemctl start vncserver-USER_1@:3.service
~]# systemctl start vncserver-USER_2@:5.service

11.1.4. Fermer une session VNC

De même que pour l'activation du service vncserver, il est possible de désactiver le lancement automatique du service pendant le démarrage système :
~]# systemctl disable vncserver@:display_number.service
Sinon, lorsque votre système est en cours d'utilisation, vous pouvez arrêter le service en exécutant la commande suivante, en tant qu'utilisateur root :
~]# systemctl stop vncserver@:display_number.service