VNC

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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