Affichage déporté sous Linux par SSH

2006-10-29 20:16:43 – Alexandre Tourette

Dans mon premier article, vous avez pu voir qu'il était assez simple de créer un affichage virtuel sur un serveur sans écran. Nous allons maintenant voir qu'il est également possible d'afficher des applications X Window sur une autre machine que celle qui les exécute. Pour assurer la sécurité de l'opération, nous utiliserons SSH.

Si vous administrez votre serveur en mode texte, vous connaissez probablement le protocole SSH qui permet d'ouvrir un terminal sur un serveur de façon sécurisée. Très rapidement, pour ceux qui ne le sauraient pas encore, voici la commande pour ouvrir une session SSH :

$ ssh utilisateur@serveur

utilisateur représente le nom de l'utilisateur sur le serveur.
serveur est l'adresse du serveur.

Une fois votre mot de passe validé, vous devriez êtes connecté à votre serveur par un terminal. Cela permet un contrôle total de la machine en mode texte. Un simple terminal est d'ailleurs ce qui se fait encore de mieux pour une administration efficace. Seulement, il peut aussi être utile d'utiliser des applications graphiques pour de nombreuses raisons qu'il n'appartient qu'à votre imagination d'inventer...
Personnellement, j'utilise entre autres cela pour configurer les navigateurs exécutés sur le serveur de scapture. Sans cela, il me faudrait les configurer sur ma machine personnelle, m'assurer que les versions sont exactement les mêmes, puis transférer les fichiers de configuration. Ce serait très mal pratique.

Heureusement, grâce à la conception client/serveur d'X, l'affichage distant est chose facile. Quelques mots pour bien saisir qui est client et qui est serveur car ça peut dérouter : les applications X Window (exécutées sur une machine qui vous sert sûrement habituellement de serveur) seront clientes du serveur X Window de votre machine personnelle.

Quelques conditions doivent être réunies pour que cela fonctionne :

  • Sur la machine où s'exécuteront les applications, il faut s'assurer que le fichier de configuration de sshd (le daemon qui permet de se connecter au serveur par SSH) contient bien une ligne "X11Forwarding yes". Sur Debian, par exemple, le fichier sshd_config se trouve dans /etc/sshd/. Dans tous les cas, le daemon doit être redémarré.
  • Du côté du serveur X, il faut que le serveur soit en cours d'exécution. Et celui-ci doit être configuré pour accepter l'affichage venant de votre "serveur". $ xhost +serveur
  • Deux options doivent être ajoutées lors du lancement de SSH :
    $ ssh -X -C utilisateur@serveur L'option -X autorise l'affichage distant. L'option -C n'est pas indispensable, mais impose aux données une compression bien utile.

Une fois connecté, voici le moment tant attendu du test d'xclock :

utilisateur@serveur:~$ xclock &

Si la liaison avec votre serveur n'est pas de très haut vol et surtout si elle passe par internet, la fenêtre va mettre quelques secondes à s'afficher. Mais l'opération reste possible même en RTC ! Attendez-vous tout de même à ne pas voir apparaître la moindre fenêtre avant plusieurs minutes avec une telle connexion (j'ai testé pour vous...).

Si rien ne s'affiche, un message d'erreur assez explicite est généralement délivré. En cas de difficulté, il est possible de vérifier le serveur d'affichage courant en affichant la variable d'environnement DISPLAY :

utilisateur@serveur:~$ echo $DISPLAY

Vous pouvez surtout vous aider des commandes man, en particulier man X, man xhost, man ssh et man sshd.

La manoeuvre est également possible en utilisant une machine sous Windows dotée d'un serveur X. Ce sujet fera l'objet d'un prochain article.

English
© 7px.net – Si vous constatez un abus, merci de me contacter.
Page générée en 0.43429 sec.