Déport d’affichage avec SSH : X11 Forwarding
Nous allons maintenant apprendre à faire du déport d’affichage à travers du SSH. Plus simplement, nous allons exécuter une application utilisant une fenêtre graphique (comme chrome, LeafPad ou autre) depuis notre serveur mais celle-ci s’affichera sur notre bureau client (qui sera ici sous Xindows) à travers une connexion initiée en SSH. Pour avoir un meilleur aperçu de ce que nous allons faire, voici un petit schéma :
Sur ce schéma, on voit bien que l'exécution de l'application graphique se fait sur le serveur, cependant tout l'affichage est dirigé vers la connexion SSH, avec le client SSH et graphique adéquat côté client, on est alors capable de voir l'affichage de l'application du serveur au travers la connexion SSH. Plus concrètement, on va voir la fenêtre de l'application du serveur sur le bureau de notre client (Windows dans notre cas).
Cela passe par l’utilisation d’un logiciel spécifique côté client (Xming) qui se chargera de la construction de la fenêtre client ainsi que bien sûr d’un Putty pour avoir une connexion SSH. Du côté serveur, il s’agit de modifier quelque peu la configuration SSH pour que celle-ci autorise le déport d’affichage (X11Forwarding).
Passons maintenant à l'action et mettons en place un déport d'affichage via SSH entre un serveur (Linux) et un client (Windows).
I. Configuration du déport d'affichage coté client
Dans un premier temps, on doit donc télécharger, en plus de Putty qui initialise la connexion SSH rappelez-vous, Xming X server que nous pourrons trouver sur SourceForge : http://sourceforge.net/projects/xming/ .
Après avoir téléchargé et installé Xming, on devra l’exécuter puis constater sa présence dans notre barre des tâches (un "X"). Nous devrons ensuite aller modifier la configuration de notre Putty pour autoriser le déport d’affichage. Il est préférable d’avoir une session déjà enregistrée pour ne pas avoir à refaire tout le paramétrage à chaque fois. On se rend donc dans notre fenêtre Putty dans “Connection“, “SSH” puis dans “X11” pour aller cocher la case "Enabled X11 forwarding" :
On s’assurera donc que Xming soit ouvert lors de l’initialisation d’une connexion SSH et que cette case soit bien cochée.
II. Configuration X11 Forwarding coté serveur
Du côté du serveur, nous aurons seulement à autoriser le déport d’affichage dans notre configuration SSH. Nous allons donc, dans notre fichier de configuration SSH "/etc/ssh/sshd_config" repérer les lignes suivantes :
X11Forwarding yes
X11DisplayOffset 10
On s’assurera que le paramètre "X11Forwarding" est à "yes", n’oubliez pas de redémarrer votre service SSH si une modification a dû être faite ("service sshd restart").
Le paramètre "X11Forwarding" permet donc d'autoriser ou non l'utilisation du déport d'affichage, on voit que sur la machine sur laquelle je suis (Debian 8 "Jessie"), ce paramètre est par défaut sur "yes".
Passons à la démonstration. Dans le cadre de notre premier déport d'affichage, nous allons faire simple et déporter l'affichage de l'application "leafpad" qui est un bloc-note simpliste pour Linux. Pour l'installer sur une distribution Debian 8, il suffit d'exécuter la ligne de commande suivante :
apt-get install leafpad
Vous êtes libre de tester avec d'autres applications bien entendu, d'autres qui peuvent être disponibles facilement sont par exemple xterm, xcalc, xman...
Note : De manière générale la lettre "X" sous Linux est associée à la notion d'affichage graphique.
Une fois que l'on sait quelle application nous souhaitons utiliser en mode graphique au travers SSH, il faut procéder en trois étapes :
La première : Démarrer une connexion SSH avec un client SSH (Putty) autorisant le X11 Forwarding, comme nous l'avons vu plus haut.
La seconde : S'assurer que le client Xming est démarré sur le client en question. Sous Windows, on peut le voir rapidement en cherchant le "X" de Xming dans la barre des tâches. Si vous ne le trouvez pas, il suffit de démarrer cette application.
La troisième : En terminal au travers SSH, lancer notre application graphique. Dans le cadre de notre test, cela va se faire avec l'ajout du caractère "&" à la fin de la commande, exemple :
Leafpad&
Ou pour "xterm" :
Xterm&
Ainsi, quelle que soit l'application graphique à déporter, il faudra systématiquement ajouter un "&" à la fin. Dès lors, et si le X11 forwarding est autorisé par les deux membres de la connexion SSH, une fenêtre va s'ouvrir sur le bureau de notre client :
Techniquement, c'est par SSH que l'affichage passe, le serveur nous envoie les informations graphiques qu'il est incapable d'afficher (dans le cas où il n'a pas de bureau graphique d'installé par exemple) mais qu'il sait générer. Une fois les informations reçues par notre client, Xming va s'occuper de l'interprétation de ces informations et d'orienter ces informations vers un affichage graphique. Ce processus, qui peut sembler complexe expliqué comme cela, est en fin de compte assez simple à mettre en place.
Les seules contraintes par rapport à une connexion SSH normale est de s'assurer que Xming est lancé, pour que quelque chose interprète les informations graphiques envoyées par le serveur via le client en SSH, et que X11 soit autorisé côté client et serveur.