Exemple : Export X11 via SSH.

Sous Unix, la possibilité est offerte d'afficher une application graphique sur un autre serveur X que le serveur local. Ainsi, il est possible d'obtenir le rendu graphique d'une application installée et lancée depuis une machine différente de celle que l'on utilise pour visionner l'application.

Pour pouvoir effectuer un export X11 classique, il faut lancer la commande ``xhost +'' sur la machine client (celà permet d'autoriser les connexions d'autres utilisateurs à la session X en cours). Il faut aussi que le serveur X acceptant la connexion (toujours sur la machine sur laquelle on désire afficher l'application) ne soit pas lancée avec la clause ``-nolisten tcp''.
Le fichier en question est le suivant : /etc/X11/xinit/x sous GNU Linux Debian

#!/bin/sh
exec /usr/bin/X11/X -dpi 100 #-nolisten tcp

Les deux conditions précédentes réunies permettent d'arriver à nos fins. Néanmoins, cette procédure est un peu lourde et les données circulent en clair sur le réseau (touches frappées par exemple).

SSH propose de façons native la gestion de l'export X11, c'est à dire que lors d'une connexion à une machine distante, il est possible de faire en sorte que les informations concernant une application fenêtrée soient intégrées au flux SSH. Dans ce cas, l'application est lancée sur le serveur X local par l'utilisateur ayant ouvert la session, donc, nul besoin d'autoriser les connexions distantes au serveur X . Autrement dit, ``-nolisten tcp'' peut être spécifié au serveur X pour son lancement et ``xhost'' n'a pas besoin d'être lancé par l'utilisateur connecté (plus sûr).

Cependant, il faut que dans la configuration du serveur SSH la clause suivante soit spécifiée (/etc/ssh/sshd_config sous GNU Linux Debian) :

X11Forwarding yes

Sur le schéma suivant, imaginons par exemple que la machine ``cerise'' ne soit pas très performante d'un point de vue traitement en images, et que la machine ``groseille'' au contraire soit tout à fait en mesure d'exploiter ce genre d'application. Cependant, si ``groseille'' est utilisée par une autre personne, on peut vouloir utiliser ``cerise'' simplement pour obtenir le rendu grpahique.

\includegraphics[width=100mm]{images/export_X11.eps}

Si ``groseille'' héberge un serveur SSH initialisé avec l'option ``X11Forwarding yes'', il suffit de s'y connecter de la manière suivante depuis cerise :

ssh -X groseille

Puis de lancer l'application désirée dans le shell obtenu suite au login, et le rendu graphique apparaitra sur ``cerise''.

Les données sont protégées puisqu'elles circulent dans le flux SSH au lieu de circuler en clair sur le réseau. Il est donc possible de disposer d'un service non disponible sur la machine locale l'esprit tranquille. En fait, l'export X11 via SSH est un tunnel, puisque les données circulent grâce à une connexion réseau TCP/IP établie entre 2 machines, en entrant par un port TCP d'une machine et en sortant par un autre port d'une autre machine.

root 2004-05-04