VNC
Client/Serveur VNC
Avec les remarques de Jice, Davy et Alexandre.
(v.2)
Qu'est que c'est ?
Une petite définition, VNC signifie Virtual Network Computing.
Cela permet de se connecter à une machine distante de sa propre machine, comme telnet ou SSH, mais à la différence que vous êtes sous l'interface graphique du système hôte, et que vous avez la main sur le clavier et la souris. On dit que VNC permet de "déporter" l'affichage d'une machine sur une autre.
VNC rend ceci possible quelque soit le système d'exploitation de la machine distante et/ou le système de votre machine.
C'est à dire, par exemple, vous êtes sous MS Windows, vous avez un serveur Linux sur lequel vous avez un compte, vous vous connectez au serveur Linux avec un client et, c'est comme si vous vous retrouviez sur le serveur avec votre environnement graphique préféré !
Pour information, il existe d'autres solutions pour utiliser l'interface graphique d'une machine distante, telles que PCAnywhere®, ou le Bureau à distance (sous MS Windows XP) qui, eux, ne fonctionnent qu'avec des serveurs et des clients MS Windows © Microsoft.
Le principe de fonctionnement
En fait, c'est un système client/serveur. D'un coté, il vous faut installer un serveur VNC et de l'autre un client VNC. Le client va interroger le serveur, qui va lui renvoyer une image de l'environnement graphique du serveur.
Bien sûr, il existe des clients/serveurs VNC pour différents systèmes d'exploitation : MS Windows, Linux, Solaris, Macintosh et DEC.
Dans notre exemple, le serveur sera à installer sur Linux et le client sur MS Windows. Bien entendu, vous installez la version Linux du serveur sur Linux et la version MS Windows du client sur MS Windows. Comme toutes les versions utilisent le même protocole de communication, cela ne pose aucun problème.
De X vers X
Sachez qu'entre 2 machines dotées de serveur X, les Unices en général, VNC ne sert à rien. Car c'est une fonctionnalité native des serveurs X. Il suffit de lancer votre application sur la machine jouant le rôle de serveur en lui spécifiant sur quel écran elle doit s'afficher.
Par exemple, je lance xeyes depuis la machine pingouin avec affichage sur l'écran 0 (par défaut) de la machine poussin :
Si l'application ne permet pas de spécifier le display, utilisez :
$ xeyes
Ou, mieux, si vous vous connectez au serveur via SSH :
$ xeyes
Dans les 2 derniers cas, l'affichage sur le client poussin des applications est automatique durant toute la session shell.
Vous pouvez aussi vous référer aux Trucs & Astuces suivants :
Distributions VNC
Il existe de multiples distributions différentes pour le client et le serveur VNC, dont plusieurs Libres (Open-Source).
Nous verrons ici l'installation des 2 distributions principales :
- RealVNC de AT&T Laboratories à Cambridge. Ils fournissent aussi une version Entreprise Edition, disponible à l'essai pendant 7 jours, mais ici la version testée est la Free Edition.
- TightVNC.
Leur utilisation est absolument semblable, seule l'interface graphique du client (sous Linux ou MS Windows) diffère, mais la logique est la même. Notez que vous pouvez utiliser le serveur VNC de l'une et le client VNC de l'autre, elles sont compatibles.
Ces 2 distributions VNC sont sous licence GPL.
Installations
Téléchargements
Avant de les télécharger vérifiez que votre distribution Linux ne fournie pas une version empaquetée d'une distribution VNC. Si c'est le cas, installez le paquet et passez à l'utilisation.
Les versions utilisées ici sont les dernières versions au moment où j'écris ces lignes. Sont fournit des versions binaires pour Linux ou les Unix et pour les systèmes Microsoft, ainsi qu'une version Java (non vue ici).
- Pour RealVNC allez sur la page Download, sachez que vos coordonnées sont demandées pour vous laisser les télécharger.
- Pour TightVNC allez ici, (fournit aussi des RPM).
RealVNC sous Linux
A partir des sources
Si vous avez téléchargé l'archive vnc-4_1-unixsrc.tar.gz, faites comme suit :
Avec un utilisateur normal (sans privilèges) :
$ cd vnc-4_1-unixsrc
$ cd common
$ ./configure
$ make
$ cd ../unix
$ ./configure
$ make
Puis en root, allez sous le répertoire /chemin/vers/vnc-4_1-unixsrc :
Je vous conseille de lire attentivement les fichiers README se trouvant sous les différents répertoires.
A partir des binaires
Si vous avez téléchargé l'archive vnc-4_1-x86_linux.tar.gz, faites comme suit :
Avec un utilisateur normal (sans privilèges) :
$ cd vnc-4_1-x86_linux
Puis en root, allez sous le répertoire /chemin/vers/vnc-4_1-x86_linux :
TightVNC sous Linux
A partir des sources
Si vous avez téléchargé l'archive tightvnc-1.2.9_unixsrc.tar.gz, faites comme suit :
Avec un utilisateur normal (sans privilèges) :
$ cd vnc_unixsrc
$ xmkmf
$ make World
$ cd Xvnc
$ ./configure
$ make
make World ne compile que le client et les divers outils.
Xvnc est le serveur X et VNC. Il est basé sur la distribution "server only" de XFree86 3.3.2.
Puis en root, allez sous le répertoire /chemin/vers/vnc_unixsrc :
Je vous conseille de lire attentivement les fichiers README se trouvant sous les différents répertoires.
Sous MS Windows
Les distributions VNC fournissent soit un exécutable d'installation, soit les binaires qu'il suffit de décompresser.
Je n'approfondis pas la question, car ce n'est pas le but de ce document.
Utilisation du serveur
Sous Linux
Il faut que chaque utilisateur lance le serveur VNC. Ou que l'administrateur le fasse pour eux. Un utilisateur peut très bien lancer VNC via une connexion telnet ou SSH.
Pour lancer le serveur VNC
Lorsqu'on lance le serveur VNC, celui-ci vous retourne un numéro sous cette forme :
Starting applications specified in /home/jonesy/.vnc/xstartup
Log file is /home/jonesy/.vnc/pingouin:1.log
Ici, le numéro est 1. Notez le bien, car vous en aurez besoin pour le client.
Pour arrêter le serveur VNC
X étant le numéro renvoyé lorsque vous avez lancé le serveur.
La première fois que vous lancerez le serveur pour un utilisateur, il vous demandera un mot de passe, pour des raisons de sécurité évidentes, n'utilisez pas le mot de passe du compte Linux !
Par la suite, pour changer de mot de passe : $ vncpasswd
Et il créera sous le $HOME de l'utilisateur le répertoire .vnc avec différents fichiers dont xstartup, qui est intéressant à modifier afin de choisir votre environnement graphique et d'autres petites choses.
Par défaut, $HOME/.vnc/xstartup ressemble à ceci (avec quelques différences suivant la distribution VNC) :
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &
twm étant l'environnement graphique par défaut. Vous pouvez bien évidemment modifier cette ligne afin de lancer l'environnement graphique qui vous plaît.
Par exemple :
- Pour KDE : startkde &
- Pour Gnome : startgnome &
- Pour IceWm : starticewm &
- Pour Fluxbox : fluxbox &
Pour que les modifications de xstartup soient prises en compte, il faut arrêter et relancer le serveur VNC.
Et bien entendu, il faut que l'interface graphique soit installée sous Linux, VNC ne va pas la simuler. ;-)
Sous MS Windows
Sous MS Windows, le serveur peut être lancé automatiquement au démarrage, en tant que service, ou en mode user.
Utilisation du client
Le client est très simple d'utilisation, lorsque vous le lancez, $ vncviewer, il vous demande le nom de la machine où est installé le serveur VNC. Supposons que notre serveur s'appelle pingouin.
Il vous faut donc taper :
X étant le numéro renvoyé lorsque vous avez lancé le serveur. Puis il vous demande le mot de passe.
A la place du nom de la machine, pingouin, vous pouvez mettre son adresse IP, 192.168.0.2:X par exemple.
Et voilà, vous vous retrouvez sous votre compte sur le serveur avec votre environnement graphique préféré !
Pour quitter le client, c'est comme d'habitude. Sachez tout de même, que si vous fermez votre session X avant de quitter le client, il vous faudra relancer le serveur VNC pour la prochaine fois.
Si vous ne fermez pas votre session X et que vous quittez le client VNC avec votre navigateur ouvert, la prochaine fois que vous vous connecterez à VNC, vous retrouverez votre navigateur ouvert. Bien sûr, si la machine hôte avec le serveur n'a pas été arrêtée.
Vous l'aurez certainement remarqué le serveur VNC sous MS Windows ne fournit pas de numéro d'écran. Donc pour s'y connecter avec un client, il suffit taper le nom ou l'adresse IP du serveur sans ajouter :X.
Connexion sécurisée
Par défaut, les échanges réseaux s'effectuant entre le serveur et le client ne sont pas protégés, en-cryptés. Il est bien évidemment possible de le faire, mais RealVNC conseille l'utilisation de VNC sur un réseau local (privé) ou via un VPN (Virtual Private Network) qui lui peut être sécurisé. Cela dit, voici comment sécuriser sa connexion VNC.
Vous aurez besoin d'un serveur SSH sur le serveur et d'un client SSH sur le client. Bien évidemment ! ;-)
En supposant que sur votre serveur pingouin, vous ayez un serveur VNC sur l'écran 1, depuis le client, lancer :
Ce qui signifie : Démarrer une connexion SSH sur le serveur pingouin, écouter le port 5902 sur localhost, ma machine le client, et transmettre toutes les connexions sur le port 5901 de pingouin, le serveur.
Puis lancer le client VNC :
Au lieu de :
Pour le pare-feu
Pour la configuration du pare-feu (firewall, mur de feu), le protocole VNC utilise les ports 59xx. xx étant compris entre et le nombre de serveurs.
MS Windows, pouvant avoir un seul serveur, utilise le port 5900. Alors que sous Linux, les serveurs commenceront à 5901 pour ensuite s'incrémenter à chaque serveur.
Pour plus d'informations sur la sécurité, reportez-vous à cette page.
Quelques projets
Voici quelques projets annexes qui pourraient vous être utile :
- VNC Reflector : VNC Reflector est un serveur VNC spécialisé qui agit comme un proxy entre un vrai serveur VNC et un certain nombre de clients. Il est conçu pour travailler efficacement avec un nombre important de clients.
- DirectVNC : Client VNC fonctionnant avec le FrameBuffer de Linux. Permet donc de se connecter à un serveur VNC depuis un client Linux sans interface graphique (sans serveur X).
- OSXvnc : Serveur VNC complet pour Mac OS X.
- VNCaudio : Une extension à VNC permettant d'avoir le son sur le bureau virtuel.
- Voir aussi les logiciels en relation sur le site de TightVNC.
Remarques
- La touche F8 donne donne accès au menu de TightVNC qui vous permet de quitter VNCviewer quand vous êtes en plein écran.
- Quand vous entrez l'adresse du serveur VNC dans TightVNC, la touche ENTER du pavé numérique efface l'adresse au lieu de l'envoyer comme on le voudrait !!! Il faut utiliser l'autre touche ENTER (celle sous BACKSPACE).
Voici les problèmes que j'ai pu rencontrer à l'utilisation :
Via VNC, aucun raccourci clavier ne marche. Par exemple, CTR+C ne fonctionne pas.
Voilà, c'est enfin terminé... ;-)
Copyright
Copyright © 18/12/2001, Jonesy
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique, Contexte non commercial 2.0 : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ |