Par jonesy.
Avec les remarques de Jice, Davy et Alexandre.
Installer, configurer et utiliser VNC. (v.2s)
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.
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.
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' :
$ xeyes -display poussin:0
Si l'application ne permet pas de spécifier le display
, utilisez :
$ export DISPLAY=poussin:0.0 $ xeyes
Ou, mieux, si vous vous connectez au serveur via SSH :
$ ssh -X pingouin $ xeyes
Dans les 2 derniers cas, l'affichage sur le client 'poussin' des applications est automatique durant toute la session shell.
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 :
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.
La Slackware ne fournit pas de distribution VNC packagée. Mais vous pourrez trouver certaines distributions VNC sur LinuxPackages.
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).
Si vous avez téléchargé l'archive vnc-4_1-unixsrc.tar.gz
, faites comme suit :
Avec un utilisateur normal (sans privilèges) :
$ tar -xvzf vnc-4_1-unixsrc.tar.gz $ 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
:
$ ./vncinstall /usr/local/bin /usr/local/man
Je vous conseille de lire attentivement les fichiers README se trouvant sous les différents répertoires.
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) :
$ tar -xvzf vnc-4_1-x86_linux.tar.gz $ cd vnc-4_1-x86_linux
Puis en root
, allez sous le répertoire /chemin/vers/vnc-4_1-x86_linux
:
$ ./vncinstall /usr/local/bin /usr/local/man
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) :
$ tar -xvzf tightvnc-1.2.9_unixsrc.tar.gz $ 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
:
$ ./vncinstall /usr/local/bin /usr/local/man
Je vous conseille de lire attentivement les fichiers README se trouvant sous les différents répertoires.
Important : Faites attention si vous lancez le serveur VNC sous Linux au démarrage, à bien avoir enregistré le mot de passe avant de redémarrer la machine, sinon elle restera bloquée au cours du démarrage.
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.
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.
$ vncserver
Lorsqu'on lance le serveur VNC, celui-ci vous retourne un numéro sous cette forme :
New 'pingouin:1 (jonesy)' desktop is pingouin:1 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.
$ vncserver -kill :**X**
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) :
#!/bin/sh [ -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 :
startkde &
startgnome &
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, le serveur peut être lancé automatiquement au démarrage, en tant que service, ou en mode user.
Je n'ai pas pu (re)vérifier correctement les multiples connexions lors de la mise à jour de ce document. N'hésitez pas à me faire part de vos retours d'expériences.
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 :
pingouin:X
X
étant le numéro renvoyé lorsque vous avez lancé le serveur. Puis il vous demande le mot de passe.
À 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.
N'oubliez pas, vous êtes sur le serveur ! C'est comme un telnet ou SSH. Donc vous n'avez pas accès à votre disque dur local, CDROM ou lecteur de disquette. Sauf si le serveur y a accès via le réseau...
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
.
Pensez à utiliser les versions Java pour toutes les plates-formes non prises en charge nativement.
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 :
$ ssh -L 5902:localhost:5901 pingouin
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 :
$ vncviewer localhost:2
Au lieu de :
$ vncviewer pingouin:1
Pour la configuration du pare-feu ( firewall, mur de feu), le protocole VNC utilise les ports 59xx
. xx
étant compris entre 0
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.
Voici quelques projets annexes qui pourraient vous être utile :
Voici les problèmes que j'ai pu rencontrer à l'utilisation :
CTR+C
ne fonctionne pas.Voilà, c'est enfin terminé... ;-)
Thèmes : #articles #client_serveur #installation #jonesy #local #logiciels #reseau #securite #xwindow
Sauf indication contraire, ce document est placé sous licence CC-BY-SA 3.0.