Forwarding X SSH

De Diablotins.org.


Le Forwarding X11 sous SSH
Image:brush.png
Une des fonctionnalités de OpenSSH et souvent peu connue, c'est la capacité d'encapsuler du trafic X.

Je m'explique, en gros, et ça aussi c peu connu un serveur X est un serveur ...
Bon okai j'arrête, ce que je veut dire c'est que le protocole X11 est conçu pour permettre l'accès à des API graphiques depuis d'autres serveurs X en réseaux .. En gros afficher une application qui tourne sur une machine sur une autre machine.
Par contre le problème du protocole X, c'est qu'il écrit en clair sur le réseau ... et la ... c'est le drame ! 'Sniff !' ;)
D'où OpenSSH, qui permet de faire passer tout les petits bits X11 dans un gros tuyau SSHv2, il est bien ce OpenSSH ;).
Bon je vous prévient il va falloir bien suivre parce que en X le client c'est le serveur enfin je me comprend. Je veux dire que pour lancer l'application d'une machine distante sur votre écran vous devez avoir un serveur X et oui ...
Par contre coté OpenSSH le client SSH est sur le serveur X et vice et versa... et .. prenez de l'aspirine avant de continuer...




Sommaire

Mise en œuvre coté serveur SSH d'où machine cliente X

D'abord vérifié que les Xlibs et xfree86-clients sont bien installé avec un jolie xterm. Ensuite passons à la configuration de OpenSSH, le démon puisqu'on est coté client X, c'est logique.

  $ su -
  # vi /etc/ssh/sshd_config
  --
  [...]
  X11Forwarding yes
  [...]
  # killall -HUP sshd

Là, je sens d'ici les gens qui vont se couper l'herbe sous le pied ... si vous êtes en connexion ssh, éviter de couper la branche sur laquelle vous êtes assis. Attention à la chute ! ;)

Sur la branche 5.X de FreeBSD, l'alternative simple :

  # /etc/rc.d/sshd restart 

Vérifiez que votre petite tuyauterie crypto-connectique n'a pas succombé a une quelconque défaillance digito-tactile (faute de frappe sur fichier de config pour ceux qui n'aurait pas compris ;) ).

  # ps afx|grep sshd
  446 ?? Ss 0:46,92 /usr/sbin/sshd

c'est bon il est pas mort ?
Bon ....
Remarque : des fois le SIGHUP ne suffit pas (à croire que OpenSSH fait la sourde oreille). Dans ce cas la :

  # killall -KILL sshd
  # sshd

ou

  # /etc/rc.d/sshd stop
  # /etc/rc.d/sshd start 

on vérifie:

  # ps afx |grep sshd
  480 ?? Ss 0:46,92 /usr/sbin/sshd

Là, je vous garantie qu'il a bien relut son fichier de configuration. Par contre, encore fois attention à la chute .. ;)

Mise en oeuvre coté client SSH d'ou serveur X

Donc la on est sur le client, pour ceux qui ont des doutes.

On va utiliser ici la fonction de X Forwarding native au client ssh :

$ ssh -X user@server

et depuis le serveur : $ xterm &

Et magie !!!

Petite précaution d'usage à destination du CLIENT SSH :

  $ su -
  # vi /etc/ssh/ssh_config
  --
  [...]
  ForwardX11 yes'.
  [...]

Exécution transférée depuis un serveur Xfree86

Bon on tient le bon bout de la socket là ... sur le client SSH :

  $ shh user@server_SSH
  $ xterm

Et la c'est le mimi c'est la rara, c'est la miracle !
Les mauvaise langues vont me dire, tout ça pour ça ???

)

Les autres Serveurs X

Bon, l'intérêt du procédé c'est surtout que vous pouvez installer un serveur X11 pour WIN32 (Xp,2000) et consort. Et donc utiliser vos jolies applications X depuis Windows. Même carrément exporter votre windows manager sous Windows.

Il existe de nombreuses implémentations de X pour Windows :

  • Payantes
    • XWIN32 de StarDivision
    • Xmanager de Netsarang (très bien).
  • gratuite

Et voilà.

Projets :