CentOS 7 : Installer et configurer un serveur tigervnc
Table des matières
Pour toutes les informations sur le protocole VNC se référer à l'article Le service VNC
Il faut bien entendu avoir une interface graphique opérationnelle (Ici GNOME)
On met le système à jour :
On installe les paquets tigervnc-server :
Et voilà !
Maintenant, il reste à configurer
Dans mon exemple, je vais créer 3 bureaux pour 3 utilisateurs nommés vnc1, vnc2 et vnc3.
Pour chacun d'eux, j'attribue un mot de passe pour l'accès VNC :
On va ensuite créer un service systemd par utilisateur. Donc on se rend dans le dossier des services :
et on copie le service [email protected] en indiquant dans le nom le numéro de port VNC :
On se rend ensuite dans le dossier où on vient de coller nos services :
Pour chaque service on remplace <USER> par l'utilisateur concerné :
Dans chaque service on peut préciser des options, comme par exemple préciser la taille de l'affichage : -geometry 800x600
La ligne
devient
Il ne faut pas oublier, bien entendu de régler le pare-feu pour autoriser les connexions sur les ports 5901 à 5903 (ou plus ...)
On repère la zone de l'interface :
Chez moi : public.
On ajoute donc les règles :
Dans un premier temps, on recharge le démon pour prendre en compte les nouveaux services créés :
On active au redémarrage nos services :
Et on les démarre :
On peut vérifier le statut des services :
On peut vérifier que les ports sont bien en écoute :
Tout simplement en utilisant un client VNC classique (dans mon exemple, celui de KDE) :
Qu'est ce que VNC
Pour toutes les informations sur le protocole VNC se référer à l'article Le service VNC
Prérequis
Il faut bien entendu avoir une interface graphique opérationnelle (Ici GNOME)
On met le système à jour :
Code BASH :
yum update
Installation de tigervnc
On installe les paquets tigervnc-server :
Code BASH :
yum install tigervnc-server
Et voilà !
Maintenant, il reste à configurer
Configuration
Les utilisateurs
Dans mon exemple, je vais créer 3 bureaux pour 3 utilisateurs nommés vnc1, vnc2 et vnc3.
Code BASH :
useradd -m vnc1 useradd -m vnc2 useradd -m vnc3
Pour chacun d'eux, j'attribue un mot de passe pour l'accès VNC :
Code BASH :
su -c 'vncpasswd' vnc1 su -c 'vncpasswd' vnc2 su -c 'vncpasswd' vnc3
Les services
On va ensuite créer un service systemd par utilisateur. Donc on se rend dans le dossier des services :
Code BASH :
cd /lib/systemd/system/
et on copie le service [email protected] en indiquant dans le nom le numéro de port VNC :
Code BASH :
cp vncserver@.service /etc/systemd/system/vncserver@:1.service cp vncserver@.service /etc/systemd/system/vncserver@:2.service cp vncserver@.service /etc/systemd/system/vncserver@:3.service
On se rend ensuite dans le dossier où on vient de coller nos services :
Code BASH :
cd /etc/systemd/system/
Pour chaque service on remplace <USER> par l'utilisateur concerné :
Code BASH :
sed -e "s/<USER>/vnc1/g" -i vncserver@:1.service sed -e "s/<USER>/vnc2/g" -i vncserver@:2.service sed -e "s/<USER>/vnc3/g" -i vncserver@:3.service
Dans chaque service on peut préciser des options, comme par exemple préciser la taille de l'affichage : -geometry 800x600
La ligne
Code BASH :
ExecStart=/sbin/runuser -l vnc1 -c "/usr/bin/vncserver %i"
devient
Code BASH :
ExecStart=/sbin/runuser -l vnc1 -c "/usr/bin/vncserver %i -geometry 800x600"
Le parefeu
Il ne faut pas oublier, bien entendu de régler le pare-feu pour autoriser les connexions sur les ports 5901 à 5903 (ou plus ...)
On repère la zone de l'interface :
Code BASH :
firewall-cmd --get-active-zones
Chez moi : public.
On ajoute donc les règles :
Code BASH :
firewall-cmd --zone=public --add-port=5901/tcp --permanent firewall-cmd --zone=public --add-port=5902/tcp --permanent firewall-cmd --zone=public --add-port=5903/tcp --permanent firewall-cmd --reload
Activation des services
Dans un premier temps, on recharge le démon pour prendre en compte les nouveaux services créés :
Code BASH :
systemctl daemon-reload
On active au redémarrage nos services :
Code BASH :
systemctl enable vncserver@:1.service systemctl enable vncserver@:2.service systemctl enable vncserver@:3.service
Et on les démarre :
Code BASH :
systemctl start vncserver@:1.service systemctl start vncserver@:2.service systemctl start vncserver@:3.service
On peut vérifier le statut des services :
Code BASH :
systemctl status vncserver@:1.service
Code TEXT :
vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled) Active: active (running) since jeu. 2015-09-24 10:09:39 CEST; 34s ago Process: 14319 ExecStart=/sbin/runuser -l vnc1 -c /usr/bin/vncserver %i -geometry 800x600 (code=exited, status=0/SUCCESS) Process: 14316 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Main PID: 14366 (Xvnc) CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service ‣ 14366 /usr/bin/Xvnc :1 -desktop vnc-server:1 (vnc1) -auth /home/vnc1/.Xauthority -geometry 800x600 -rfbwait 30... sept. 24 10:09:35 vnc-server systemd[1]: Starting Remote desktop service (VNC)... sept. 24 10:09:39 vnc-server systemd[1]: Started Remote desktop service (VNC).
On peut vérifier que les ports sont bien en écoute :
Code BASH :
netstat -laputen | grep vnc
Code TEXT :
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 1001 47089 14366/Xvnc tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 1002 47644 14423/Xvnc tcp 0 0 0.0.0.0:5903 0.0.0.0:* LISTEN 1003 51272 15011/Xvnc
La connexion
Tout simplement en utilisant un client VNC classique (dans mon exemple, celui de KDE) :