VNC
| Fiche express | |
|---|---|
| Domaine | Bureau distant graphique |
| Commandes | vncserver, vncviewer, vncpasswd
|
| Paquets | tigervnc-server (serveur), tigervnc (client)
|
| Port par défaut | 5900 + numéro d'affichage (ex. :1 → 5901)
|
| ⚠️ Sécurité | Protocole non chiffré par défaut — toujours passer par un tunnel SSH |
VNC (Virtual Network Computing) permet de piloter un bureau graphique distant. Sous RHEL/CentOS, l'implémentation courante est TigerVNC (remplaçant de TightVNC sur les distributions récentes). ⚠️ Le protocole VNC ne chiffre ni l'authentification ni l'affichage par défaut : sur un réseau non fiable, toujours faire transiter la connexion dans un tunnel SSH (ou VPN équivalent) plutôt que d'exposer directement le port 59xx.
Installation
# Sur le serveur (machine hébergeant le bureau distant)
yum install tigervnc-server
# Sur le poste client
yum install tigervnc
Configuration du serveur
Définir le mot de passe VNC pour l'utilisateur qui hébergera la session :
su - utilisateur
vncpasswd
Copier le service systemd modèle puis l'adapter (au minimum la directive User=) :
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service
vi /etc/systemd/system/vncserver@.service
Activer et démarrer une instance pour un numéro d'affichage donné (ici :1) :
systemctl daemon-reload
systemctl enable --now vncserver@:1.service
Utilisation côté client
vncviewer adresse_ip:numero_affichage
# exemple :
vncviewer 192.168.0.1:1
Tunnel SSH (recommandé)
Le VNC brut n'étant pas chiffré, la bonne pratique est de rediriger le port du serveur VNC vers le client via SSH, puis de se connecter en local :
# Depuis le client : ouvre un tunnel local vers le port VNC du serveur distant
ssh -L 5901:localhost:5901 utilisateur@serveur
# Dans un second terminal (ou une fois le tunnel établi), se connecter en local
vncviewer localhost:5901
Ainsi le trafic VNC ne circule jamais en clair sur le réseau : seul le tunnel SSH, chiffré, transite entre le client et le serveur.
NoVNC (accès via navigateur)
noVNC est un client VNC HTML5 : il permet de se connecter à un serveur VNC déjà démarré directement depuis un navigateur, sans installer de client dédié. Un serveur VNC actif reste un prérequis.
git clone git://github.com/kanaka/noVNC
cd noVNC
# Certificat auto-signé pour le proxy websocket de noVNC
openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem
# Démarrer/vérifier le serveur VNC visé (ici affichage :1)
vncserver -geometry 1024x768 :1
# Lancer le proxy noVNC vers ce serveur, écoute HTTP sur le port 80
./utils/launch.sh --vnc localhost:5901 --listen 80
Se connecter ensuite depuis un navigateur sur http://adresse_du_serveur/vnc.html. Comme pour un client VNC classique, ce flux HTTP n'est pas chiffré par défaut : pour un usage au-delà d'un réseau de confiance, servir noVNC en HTTPS (certificat valide plutôt qu'auto-signé) ou le placer lui-même derrière un tunnel/reverse proxy chiffré.
Voir aussi
- SSH — tunnels et redirection de ports