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.