Mon CV

Installer le contrôle VNC sur un serveur Debian avec TightVNCServer

1 novembre 2013

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 fichier xstartup 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.

    ARD Paramétrage

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
Posted in Apple et Macintosh, Unix et LinuxTags: