Date de publication: le mercredi 16 mai 2007 Ă 18h34
Dernière modification: par Pascal BOYER le samedi 21 juillet 2007 à 12h11
« Article précédent: Installer une imprimante Canon i-SENSYS ML4660PL sous Linux/Debian
Qu’est-ce que TightVNC
TightVNC est la version allégée de VNC .
Il a été spécialement concu pour fonctionner sur des réseaux à faible débit comme le sont les réseaux basés sur des modems 56 kB/s (comme dans certaines écoles par exemple). De plus TightVNC corrige certains bugs et lenteurs de VNC.
TightVNC est donc un formidable outil qui permet:
- de prendre le contrôle à distance d’un autre ordinateur par un réseau local voire par le réseau Internet,
- de voir ce qui se passe sur un autre ordinateur (sans en prendre forcément le contrôle),
- à plusieurs personnes de voir ce qu’il se passe sur un même ordinateur,
- aucun temps de latence de la souris ou du curseur,
- un temps de latence ultra court pour les saisies au clavier,
- des besoins limités en bande passante, compatibles avec les réseaux WiFi,
- un taux de compression élevé pour les images,
- une compatibilité avec OpenGL et les extensions XFree 4.3 sur n’importe quelle plate-forme,
- une approche unifiée de la prise de contrôle à distance sur les clients légers.
Voici quelques caractéristiques de TightVNC dans la langue de Shakespear:
- File transfers in Win32 version. You can updload files from your local machine to the TightVNC server, and download files from the server to you computer.
- Local cursor handling. Cursor movements do not generate screen updates any more, remote cursor movements are processed locally by the viewer, so you do not see slow remote cursor movements behind the local cursor.
- Efficient compression algorithms. New Tight encoding is optimized for slow and medium-speed connections and thus generates much less traffic as compared to traditional VNC encodings. At the same time, TightVNC supports all the standard VNC encodings, so it can operate efficiently over fast networks, too. Thus, with TightVNC you can work remotely almost in real time in most network environments.
- Configurable compression levels. You can choose any appropriate level of compromise between compression ratios and coding speed, depending on your connection speed and processor power.
- Optional JPEG compression. If you don’t care too much about perfect image quality, you can use JPEG compression which will compress color-rich screen areas much more efficiently (the image quality level is configurable too).
- Enhanced Web browser access. TightVNC includes a greatly improved Java viewer with full support for Tight encoding, local cursor feature, 24-bit color mode, and more. The Java viewer applet can be accessed via built-in HTTP server like in the standard VNC.
- Support for two passwords (full-control and read-only). The server allows or disallows remote keyboard and mouse events depending on which password was used for authentication.
- Advanced Properties dialog in WinVNC. Unlike the standard VNC, TightVNC gives you the possibility of setting a number of advanced settings directly from the WinVNC GUI, and to apply changed settings immediately. There is no need to launch regedit to set query options, connection priority, to allow loopback connections, disable HTTP server etc.
- Flexible configuration options. Unlike the standard VNC, TightVNC allows you to choose arbitrary port numbers for TCP/IP connections, in addition to display numbers traditionally used in VNC.
- Automatic SSH tunneling on Unix. The Unix version of TightVNC viewer can tunnel connections via SSH automatically using a local SSH/OpenSSH client installation (provided that an SSH/OpenSSH server is running on the server as well).
- And more. TightVNC features a number of other improvements, performance optimizations and bugfixes, see change logs for more information.
1°/ Installer tightvnc
Les packages requis
Bien sûr, en plus d’une distribution en état de fonctionnement, il faut installer les packages suivants:
dpkg -l '*tightvnc*'
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder | État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé |/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais) ||/ Nom Version Description +++-=================-==========-=================== ii tightvncserver 1.2.9-5 Virtual network computing server software ii xtightvncviewer 1.2.9-5 Virtual network computing client software for X
Il faut aussi les librairies jpeg et zlib:
dpkg -l '*zlib*'
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder | État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé |/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais) ||/ Nom Version Description +++-=================-=============-======================== ii zlib1g 1.2.2-4 compression library - runtime ii zlib1g-dev 1.2.2-4 compression library - development ii zlib1g-dev 1.2.2-4 compression library - development
dpkg -l '*libjpeg*'
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder | État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé |/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais) ||/ Nom Version Description +++-================-==========-========= ii libjpeg-progs 6b-9 Programs for manipulating JPEG files ii libjpeg62 6b-9 The Independent JPEG Group's JPEG runtime library ii libjpeg62-dev 6b-9 Development files for the IJG JPEG library
2°/ Lancer/arrêter le serveur
Pour cela point besoin d’être root car tout utilisateur de la machine sur laquelle est installé le serveur tightvncserver peut vouloir exporter sont environnement graphique.
Donc, pour lancer le serveur on utilise la commande:
tightvncserver : 64 -geometry 1024x768 -depth 16
oĂą:
-
Le seul numéro de serveur qu’il ne faut pas utiliser est le numéro du serveur auquel votre session est attachée (couramment le 0) (12350 fonctionne parfaitement !)
Pour information, le nom réel du démon/serveur qui tourne est Xtightvnc :
netstat -anpt |grep tight
tcp 0 0 0.0.0.0:5964 0.0.0.0:* LISTEN 17848/Xtightvnc tcp 0 0 0.0.0.0:6064 0.0.0.0:* LISTEN 17848/Xtightvnc tcp 0 0 82.67.66.131:5964 82.67.64.88:34361 ESTABLISHED17848/Xtightvnc
- -geometry 1024x768 désigne la résolution graphique qui sera affichée sur l’écran des machines clientes.
- -depth 16 désigne la quantité de couleurs qui doit être transmise (ici 2^16 = 65536 couleurs).
Lorsque vous lancez la commande pour la première fois, voici ce que vous obtenez:
You will require a password to access your desktops. Password: xxxxxxxx Verify: xxxxxxxx New 'X' desktop is euphorie.linuxorable.fr:3 Creating default startup script /home/pascal/.vnc/xstartup Starting applications specified in /home/pascal/.vnc/xstartup Log file is /home/pascal/.vnc/euphorie.linuxorable.fr:3.log
failed to set default font path '/usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/100dpi/,
/usr/share/fonts/X11/75dpi/,'
Fatal server error:
could not open default font 'fixed' ou:
Font directory '/usr/share/fonts/X11/misc//usr/share/fonts/X11/Type1/' not found - ignoring Fatal server error: could not open default font 'fixed'
$fontPath = "/usr/share/fonts/X11/misc/,"; $fontPath .= "/usr/share/fonts/X11/Type1/,"; $fontPath .= "/usr/share/fonts/X11/100dpi/,"; $fontPath .= "/usr/share/fonts/X11/75dpi/";
C’est dans ce fichier que vous allez pouvoir indiquer les applications ou mieux, l’environnement de travail, que vous souhaitez exporter.
Vous allez donc, avant de configurer ce fichier, arrĂŞter le serveur:
3°/ Configurer les applications à exporter
Pour ce faire, éditez le fichier .vnc/xstartup et voici ce que contient le mien:
#!/bin/sh xrdb $HOME/.Xresources xsetroot -solid grey x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & #x-window-manager & startkde &
Je n’ai donc commenté que la dernière ligne pour la remplacer par une autre qui démarre KDE, mon environnement de travail.
Une fois que vous aurez correctement configuré ce fichier, relancez le serveur:
tightvncserver : 64 -geometry 1024x768 -depth 16
4°/ Se connecter au serveur:
Une fois que le serveur est démarré, il suffit de lancer le client graphique xtightvncviewer à partir de n’importe quelle machine où celui-ci est installé. Cela peut être également fait à partir de la machine sur laquelle tourne le serveur. Dans tous les cas, la commande est:
xtightvncviewer
|
|
|
Vous avez donc deux façons d’identifier la machine qui exécute le serveur tightvncserver : soit par son adresse IP soit par son nom de machine internet.
Puis après avoir validez avec Enter , vous devrez taper le mot de passe défini lors du premier démarrage du serveur (voir 2°/ ):
Si tout est correct, une fenêtre s’ouvrira et apparaitra l’environnement graphique de l’utilisateur qui a lancé le serveur . Vous pourrez dès lors utiliser cet environnement graphique comme si vous étiez devant la machine.
5°/ Et alors ?...
Ben c’est déjà pas si mal !
Vous pouvez maintenant prendre le contrĂ´le de votre machine Ă distance et graphiquement.
Mais le fin du fin est à venir. Et pour cela il est nécessaire que deux personnes, au minimum , se connectent au même serveur tightvncserver . Vous pourrez alors observer l’interaction des souris et des claviers et envisager l’étendue des possibiltés qui maintenant s’offrent à vous.
6°/ Quelques options intéressantes
Ces options concernent la commande de démarrage du serveur.
-
-viewonly désactive l’utilisation du clavier et de la souris.
Cette option peut être intéressante si l’on souhaite faire une démonstration à plusieurs personnes sans que celles-ci ne puissent intervenir avec leur clavier ou souris.
- -compatiblekbd active les touches META et ALT permettant de conserver l’utilisation des raccourcus claviers !
- -nocursor n’affiche tout simplement pas le curseur de la souris qui est remplacé par une toute petite mire.
- -nevershared définit la machine locale (celle sur laquelle est démarré le serveur) comme seule machine pouvant avoir accès au serveur tightvncserver .
- -alwaysshared (non testée) voir man Xtightvnc
7°/ Modifier le mot de passe
Lorsque vous lancez le server tightvncserver pour la première fois, vous devez définir un mot de passe qui sera utilisé par les personne qui souhaiteront se connecter à votre serveur.
Si vous désirez ultérieurement modifier ce mot de passe, utlisez la commande:
vncpasswd Connexion cryptée avec SSH
1ère solution
Par défaut, la connexion entre le poste client et le serveur VNC n’est pas cryptée laissant circuler en clair sur le réseau les mots de passe et les données.
Pour remédier à ce manque de sécurité, il est possible de créer un tunel SSH par lequel transiteront de manière cryptées toutes ces données.
Voici la procédure à suivre pour mettre en place un tunel SSH.
Démarrer le serveur VNC
La première chose à faire est de démarrer le serveur VNC.
Nous supposerons par la suite que la commande qui lance le serveur VNC est la suivante:
tightvncserver : 3 -geometry 1024x768 -depth 16
Configuration SSH de la machine cliente
Sur la machine cliente, il est impératif que le client SSH supporte le transfert du protocole X. Vous devez donc vérifier que la ligne:
ForwardX11 yes
...est bien décommentée dans le fichier /etc/ssh/ ssh_config qui est le fichier de configuration du client SSH.
En ce qui concerne la configuration du serveur SSH ( /etc/ssh/ssh d _config ) de la machine client, il peut indifféremment supporter ou non le transfert du protocole X ( X11Forwarding yes ), ce n’est pas à lui que l’on demande de fournir ce service.
Après d’éventuelles modifications de ces deux fichiers, relancez le serveur SSH:
/etc/init.d/ssh restart
Configuration SSH du serveur VNC
Sur le serveur VNC, il est impératif que le serveur SSH supporte le transfert du protocole X. Vous devez donc vérifier que la ligne:
X11Forwarding yes
...est bien décommentée dans le fichier /etc/ssh/ssh d _config qui est le fichier de configuration du serveur SSH.
En ce qui concerne la configuration du client SSH ( /etc/ssh/ssh_config ) du serveur VNC, il peut indifféremment supporter ou non le transfert du protocole X ( ForwardX11 yes ), il n’est pas utilisé.
Après d’éventuelles modifications de ces deux fichiers, relancez le serveur SSH:
/etc/init.d/ssh restart
Connexion au serveur VNC
Dans un premier temps, il faut, à partir de la machine cliente, établir une connexion SSH avec le serveur VNC:
- -C active la compression des données ce qui améliore la fluidité de l’interface graphique.
-
-l indique que le login qui suit est celui de votre compte Unix sur le serveur distant (ici le serveur VNC).
Ceci implique donc que vous ayez un compte Unix sur le serveur VNC.
-
-L XXXX:localhost:5903 transfert le port XXXX de la machine cliente sur le port 5903 du serveur VNC.
XXXX peut prendre n’importe quelle valeur de port supérieur à 1024, pourvu bien sûr que ce ne soit pas un port déjà utilisé par une autre application.
- @IP du serveur VNC devra évidemment être remplacé par l’adresse IP du serveur VNC. Vous pouvez mettre le nom de machine du serveur VNC au lieu de son adresse IP.
Lancer le client graphique VNC
Dans un deuxième temps, ouvrez, toujours sur la machine cliente, un xterm et lancez le client graphique VNC ainsi:
xtightvncviewer localhost::XXXX
...puis saisissez le mot de passe VNC et l’application graphique se lancera:
Fig. 3: Capture d’écran
Vous pouvez également contrôler que la connexion établie transite bien par le port XXXX et par SSH.
Dans l’exemple ci-dessous, le port est 32544:
lsof -i tcp:32544
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME ssh 6304 virginie 4u IPv4 488017 TCP localhost:32544 (LISTEN) ssh 6304 virginie 8u IPv4 488060 TCP localhost:32544->localhost:36884 (ESTABLISHED) xtightvnc 6310 virginie 4u IPv4 488059 TCP localhost:36884->localhost:32544 (ESTABLISHED)
2ème solution
Cette solution est plus simple à mettre en oeuvre et ne requière pas une connexion SSH préalable au démarrage du client VNC.
Donc, sans rien changer à la configuration SSH décrite ci-dessus ( Configuration SSH de la machine cliente et Configuration SSH du serveur VNC ) une seule commande suffit pour lancer, depuis la machine cliente, une connexion cryptée avec SSH vers le serveur VNC:
xtightvncviewer -via pascal@<IP serveur VNC> localhost:3
Dans cette commande il est impératif de spécifier:
- le nom (ici pascal ) du compte unix sur le serveur VNC
- le numéro du display (ici :3 ) utilisé par le serveur TightVNCserver
Chez moi, la commande ci-dessus renvoie une sortie un peu surprenante mais qui fonctionne quand mĂŞme:
Password: Password: Password: pascal@82.67.66.131's password: VNC server supports protocol version 3.3 (viewer 3.3) Password:
Je dois donc taper 3 fois le mot de passe VNC puis une fois le mot de passe de mon compte unix sur le serveur et enfin à nouveau le mot de passe VNC. Vraiment très surprenant!
Une fois connecté, on peut contrôler que la connexion SSH est bien en place:
lsof -i tcp |grep vnc
xtightvnc 5842 virginie 4u IPv4 31503 TCP localhost:35382->localhost:5599 (ESTABLISHED)
Ceci montre la redirection du port d’écoute du client Xtightvnc 35382 vers le port 5599
lsof -i tcp |grep ssh
ssh 5761 virginie 4u IPv4 19412 TCP localhost:5599 (LISTEN) ssh 5761 virginie 8u IPv4 19423 TCP localhost:5599->localhost:35382 (ESTABLISHED)
Cette commande montre que c’est SSH qui écoute (LISTEN) sur le port 5599 puis redirige vers le port d’écoute 35382 du client Xtightvncviewer.
Commentaires












