Voici un court tutoriel pour utiliser VNC sur une machine CentOS et ainsi accéder à une (ou des) session(s) X. En ce qui me concerne, je l’utilise ponctuellement pour avoir accès au bureau XFCE de mon serveur dédié.
Installation du paquet
L’installation se fait toujours avec yum
, pour CentOS 5.x et Fedora avant F11:
# yum install vnc-server
Pour CentOS 6.x et Fedora après F11, on utilise TigerVNC :
# yum install tigervnc-server
Attribuer un mot de passe VNC à l’utilisateur
Se connecter en tant que l’utilisateur pour l’accès VNC, puis lui attribuer un mot de passe avec cette commande :
vncpasswd
Ceci va créer le répertoire .vnc
et stocker le mot de passe.
Configurer le serveur
Il faut éditer le fichier /etc/sysconfig/vncservers
avec quelque chose comme ceci :
VNCSERVERS="2:fabien toto:6"
VNCSERVERARGS[2]="-geometry 1024x768 -localhost"
VNCSERVERARGS[6]="-geometry 800x600"
Ce qui signifie que fabien va avoir un écran de 1024x768px accessible sur le port VNC 2 (port VNC 5900 + 2 = 5902) seulement en local, alors que toto utilisera le port 6 avec une résolution de 800x600px.
Démarrage et initialisation du serveur
Le serveur doit etre lancé une fois pour initialiser le fichier de configuration ~/.vnc/xstartup
des utilisateurs :
# /sbin/service vncserver start
# /sbin/service vncserver stop
Il ne reste plus que quelques modifications à effectuer pour accéder à sa session à distance. Dans le cas de XFCE, je remplace simplement twm &
par startxfce4 &
(gnome-session &
pour Gnome ou startkde &
pour KDE). La ligne XKL_XMODMAP_DISABLE=1
est nécessaire pour éviter des problèmes de mappage de clavier, il est bon de ne pas l’oublier. Voici mon fichier xstartup
:
#!/bin/sh
# Uncomment the following two lines for normal desktop:
#unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
startxfce4 &
Tunnel SSH
L’option -localhost
n’autorise l’accès qu’en local. Pour accèder à ce serveur en VNC il faut donc au préalable établir une connexion SSH entre la machine cliente et celui-ci en créant un tunnel qui redirigera le port 5904 du serveur vers le port – par exemple – 6004 du client. Voici comment instancier cette connexion SSH depuis un client linux :
$ ssh -L 6002:localhost:5902 IP_SERVEUR
Et voici la configuration de ce tunnel avec puTTY sous Windows :
Une fois la connexion effectuée, il suffit d’utiliser son client VNC avec localhost et le port 6004 pour accéder au serveur en toute sécurité. En ligne de commande sous linux avec le client vncviewer :
$ vncviewer localhost:6002
Et sous Windows par exemple avec le client UltraVNC :
De cette façon, il n’est pas possible de se connecter à la machine depuis une autre IP que la locale (127.0.0.1
).
1 thought on “Mise en place d’un serveur VNC et tunnel SSH”