Si vous administrez un serveur et que vous êtes un adepte des interfaces graphiques, vous souhaiteriez certainement avoir un accès distant à votre serveur via VNC.
Voici les étapes à suivre pour installer TightVNCServer sur votre serveur (ici une Debian Squeeze) et vous y connecter (ici depuis un Mac avec Apple Remote Desktop).
En étant connecté en ssh à votre serveur, commencez par installer TightVNCServer :
apt-get install tightvncserver
Installez toutes les dépendances nécessaires.
Puis, lancez une première fois manuellement tightvncserver
:
tightvncserver
Un mot de passe vous sera demandé pour permettre les connexions à venir.
You will require a password to access your desktops. Password:
Saisissez donc un mot de passe, pensez à le mémoriser. Puis, à la question :
Would you like to enter a view-only password (y/n)?
Répondez “n”. Vous obtenez :
New 'X' desktop is votre_machine:1 Creating default startup script /home/user/.vnc/xstartup Starting applications specified in /home/user/.vnc/xstartup Log file is /home/user/.vnc/votre_machine:1.log
Un dossier .vnc
est alors créé à la racine de votre compte utilisateur. Ce dossier contient :
- un fichier
.log
- un fichier
.pid
qui contient le pid de la session Xtightvnc qui vient d’être démarrée - un fichier
xstartup
, qui fonctionne comme un fichier.xinitrc.
Ce fichierxstartup
va définir l’environnement graphique utilisé quand vous vous connectez. Je vous propose de télécharger directement le mien depuis Github :wget -O $HOME/.vnc/xstartup --no-check-certificate https://raw.github.com/yvangodard/Scripts-Utiles/master/xstartup
Voici le contenu de ce fichier :
#!/bin/sh xrdb $HOME/.Xresources xsetroot -solid grey # Fix to make GNOME work export XKL_XMODMAP_DISABLE=1 /etc/X11/Xsession
Avant de faire un test, quittez puis relancez manuellement tightvncserver
:
# Tuer les pocessus en cours killall Xtightvnc # Redémarrer le VNC tightvncserver
Faites ensuite un test de connexion depuis votre client VNC. Pour ma part j’utilise Apple Remote Desktop sur mon Mac :
- utilisez la fonction scanner, et entrez l’adresse IP ou le nom DNS de votre serveur,
- pensez à modifier les informations pour personnaliser notamment le port de partage d’écran utilisé. Pour connaître ce port, lancez la commande suivante sur le serveur :
-
ps -ef | grep Xtightvnc
Ce qui renvoie dans mon cas :
Xtightvnc :1 -desktop X -auth /root/.Xauthority -geometry 1600x1200 -depth 24 -rfbwait 120000 -rfbauth /root/.vnc/passwd -rfbport 5901 -fp /usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/100dpi/ -co /etc/X11/rgb
L’adresse du port (ici 5901) est facile à repérer. C’est ce port que vous devez utiliser depuis votre client VNC. Evidemment, il faut que ce port soit accessible depuis l’extérieur, ce qui peut nécessiter d’ouvrir le port dans votre firewall. Si vous utilisez
iptables
, je vous renvoie sur un billet que j’avais écrit à ce sujet.
Une fois que vous réussissez à vous connecter correctement, il reste à paramétrer le service pour qu’il démarre automatiquement, au boot de votre serveur. Pour cela nous allons créer un script de démarrage. Je vous propose de récupérer mon script depuis Github :
wget -O /etc/init.d/vnc --no-check-certificate https://raw.github.com/yvangodard/Scripts-Utiles/master/init.d/vnc
Ce script est le suivant :
### BEGIN INIT INFO # Provides: vnc # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 ### END INIT INFO #!/bin/sh #---------------------------------------- # Lancer automatiquement VNC #---------------------------------------- # Short-Description: Service de démarrage et extinction du serveur VNC sur compte root. VNCUSER='root' case "$1" in start) su $VNCUSER -c 'vncserver :1 -geometry 1600x1200 -depth 24' echo "Lancement de TightVNC server pour l'utilisateur $VNCUSER " ;; stop) killall Xtightvnc echo "Tightvncserver arrêté" ;; restart) killall Xtightvnc echo "Tightvncserver arrêté" su $VNCUSER -c 'vncserver :1 -geometry 1600x1200 -depth 24' echo "Lancement de TightVNC server pour l'utilisateur $VNCUSER " ;; status) echo "Lancement de la commande ps -ef | grep Xtightvnc" ps -ef | grep Xtightvnc ;; *) echo "Usage: /etc/init.d/vnc {start|stop|restart|status}" exit 1 ;; esac exit 0
Si vous souhaitez modifier l’utilisateur qui sera utilisé par VNC, il vous faudra éditer le fichier :
# Editer le fichier avec nano sudo nano /etc/init.d/vnc
Modifiez la varibiable ‘VNCUSER’, puis faites un petit [CTRL] + X
pour sortir, et n’oubliez pas de valider l’enregistrement par Yes
puis [Enter]
.
Ensuite :
# Rendons exécutable le script de démarrage chmod a+rx /etc/init.d/vnc # Puis ajoutons ce script au boot update-rc.d vnc defaults 20
Pour tester, il nous faut lancer le service avec :
/etc/init.d/vnc start
Pour arrêter le service, il nous faut lancer la commande :
/etc/init.d/vnc stop
Pour connaître l’état du service :
/etc/init.d/vnc status
Pour relancer le service :
/etc/init.d/vnc restart