Linux Réseaux
vnc4server
Installer, configurer et connexion à un bureau VNC d'un serveur distant



Pour : Linux (Debian, Ubuntu ...)


Voici un tutoriel pour mettre en place un serveur VNC avec le logiciel "vnc4server".
Dans le but de permettre à plusieurs clients (clients léger) de se connecter en même temps sur un serveur afin d'accèder à une session graphique.



1- Installation du serveur vnc4server
2- Créer une session graphique pour l'utilisateur courant
3- Définir un mot de passe
4- Lancer automatiquement les sessions graphiques vnc
5- Connexion à un serveur vnc
6- Configurer l'ouverture de session pour lancer automatiquement un bureau graphique (gnome)
7- Arrêté la session graphique d'un utilisateur
8- Lister toutes les sessions ouvertes



1- Installation du serveur vnc4server

Installation de vnc4server depuis les dépôts:

# apt-get install vnc4server





2- Créer une session graphique pour l'utilisateur courant

De base la commande "vncserver" permet de créer en arrière plan une session graphique pour un utilisateur.
Chaque session est lié au numéro de port 5900 + son numéro de session, soit 5901 pour la première session puis 5902 pour la seconde ...
Il est ainsi possible d'exécuter simultanément plusieurs sessions graphique.

PS: Cette commande est volatile, à chaque redémmarrage du server il vous faudra retaper "vncserver".

On va en premier voir la méthode de base pour créer une session graphique, vous devez vous connecter sur le compte de l'utilisateur.
Par exemple:

su cedric



Puis saisir "vncserver":

cedric@pc-octetmalin:~$ vncserver New 'pc-octetmalin:1 (cedric)' desktop is pc-octetmalin:1 Starting applications specified in /home/cedric/.vnc/xstartup Log file is /home/cedric/.vnc/pc-octetmalin:1.log cedric@pc-octetmalin:~$



Dans l'exemple ci-dessus, l'utilisateur cedric à le chiffre "1" donc son numéro de port sera le "5901".
Cette commande va créer 2 fichiers dans "/home/nom_utilisateur/.vnc/", suivant l'exemple les fichiers se nomme "pc-octetmalin:1.pid" et un fichier "pc-octetmalin:1.log".
Et un 3ème fichier dans le répertoire "/tmp", ".X1-lock" qui est protégé en écriture.

A partir de là, on peut déjà ce connecter à l'utilisateur "cedric", c'est rapide et facile à mettre en place comme logiciel, non?


Il vous est possible de choisir le numéro de session de l'utilisateur, donc le numéro de port.
Par exemple pour définir le numéro "5" pour la session courante tapez:

$ vnc4server :5



Vnc4server dispose de d'autre options, voir:

man vnc4server


PS: Mais faite attention, il faut toujours rajouter les options avant le numéro de la session graphique.



3- Définir un mot de passe

Pour une question de sécurité nous allons ajouter un mot de passe a la session "vnc" de l'utilisateur courant.
Ce mot de passe sera demandé avant d'établir la connexion distante.
Dans le terminal tapez:

$ vncpasswd Mot de passe: Vérifiez:



Cela va crée dans le dossier "~/.vnc/" un fichier "passwd" contenant le mot de passe mais crypter.



4- Lancer automatiquement les sessions graphiques vnc

Nous allons utiliser un script pour permettre de lancer ou d'arrêter automatiquement tout les bureaux vnc des utilisateurs.

Pour celà chaque comptes utilisateurs doivent au préalable exister sur le serveur et disposer d'un mot de passe vnc.
Dans notre exemple nous avons trois sessions vnc à automatiser, celle de toto, titi et mimi utilisant respectivement le bureau numéro 0, 3 et 10.

Pour commencer on va créer le fichier pour le script d'automatisation:

# nano /etc/init.d/vnc4server



Voici le contenu du script:

# Lancement des sessions graphique de vnc4server case "$1" in start) echo "[Demarrage de vnc4server]" su toto -c 'vnc4server :0' su titi -c 'vnc4server :3' su mimi -c 'vnc4server :10' ;; # Arrêt des sessions graphique de vnc4server stop) echo "[Arrêt de vnc4server]" su toto -c 'vnc4server -kill :0' su titi -c 'vnc4server -kill :3' su mimi -c 'vnc4server -kill :10' ;; *) echo "Usage: /etc/init.d/vnc4server {start|stop}" exit 1 ;; esac exit 0




Après on donne les droits d'exécution sur notre script:

# chmod +x /etc/init.d/vnc4server



Maintenant on l'ajoute au démarrage du serveur avec la commande:

# update-rc.d vnc4server defaults



Au prochains redémarrage nos trois sessions vnc seront automatiquement lancés.



5- Connexion à un serveur vnc

Le poste client doit posséder un logiciel de connexion a vnc.
Comme UltraVNC depuis un poste Windows ou TightVNC depuis Linux ...




Comme vous pouvez le voir, seul un terminal est affiché.
Pour lancer le bureau gnome, saisissez:

gnome-session






Vous pouvez aussi lancer un client vnc depuis un terminal avec la commande "vncviewer".

Syntaxe:
vncviewer nom_serveur_ou_ip:numéro_de_port
vncviewer nom_serveur_ou_ip:numéro_de_session
vncviewer nom_serveur_puis_nom_de_domaine:numéro_de_session

Exemple:

vncviewer 192.168.1.112:5900





6- Configurer l'ouverture de session pour lancer automatiquement un bureau graphique (gnome)

Il faut éditer le fichier "xstartup" qui permet de configurer le lancement du serveur VNC pour le compte de l'utilisateur:

nano /home/nom_utilisateur/.vnc/xstartup



Puis décommenter les lignes (retirer le "#"):
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

Voici a quoi ressemble le contenu du 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 & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & x-window-manager &




Une autre méthode qui consiste à remplacer "x-window-manager &" par "gnome-session &", comme ci dessous:

#!/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 & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & gnome-session &



Pour ne plus afficher le terminal au début, commenter la ligne "x-terminal-emulator".

Après il faut donner les droit d'accès au fichier pour bien lancer le serveur X:

# chmod 755 /etc/X11/xinit/xinitrc





7- Arrêté la session graphique d'un utilisateur

1- La 1ère méthode consiste a passer par le serveur VNC.
Voici la commande pour arrêté une session graphique du serveur vnc:
Syntaxe:
$ vnc4server -clear -kill :[numéro_session]

Exemple:

$ vnc4server -clear -kill :27 Killing Xvnc4 process ID 2108



2- La 2ème méthode consiste à tuer directement le processus système de la session.
Vous pouvez trouver le numéro du processus système (pid) de la session utilisateur dans son profile, en affichant le contenu de son fichier ".pid".
/home/[nom_de_l'utilisateur]/.vnc/.....pid

Exemple:

cat /home/cedric/.vnc/pc-octetmalin:1.pid 1773



Maintenant utilisez la commande kill pour tuer le processus:

kill 1773





8- Lister toutes les sessions ouvertes

Pour celà on va utiliser la commande netstat filtré avec la commande grep.

netstat -tap | grep vnc tcp 0 0 *:6040 *:* LISTEN 2532/Xvnc4 tcp 0 0 *:6020 *:* LISTEN 2249/Xvnc4 tcp 0 0 *:6030 *:* LISTEN 2146/Xvnc4 tcp6 0 0 [::]:5940 [::]:* LISTEN 2532/Xvnc4 tcp6 0 0 [::]:5920 [::]:* LISTEN 2249/Xvnc4 tcp6 0 0 [::]:5930 [::]:* LISTEN 2146/Xvnc4





Par O.Cédric
Sur www.octetmalin.net

Article publié le:
16/01/2012 14:03





Cette page vous à plus?

Dîtes que vous l'aimez en cliquant sur le bouton Facebook.