Si vous utilisez déjà un serveur X sous Windows (comme vous le faites avec Xming), le côté Windows est généralement terminé (mais voir ci-dessous pour quelques détails importants). Le bit clé restant est de dire aux applications X11 sur le pi d'envoyer leurs données X11 à votre PC Windows.
Cela se fait via la DISPLAY
variable d'environnement. Normalement, si le serveur X et l'application s'exécutent sur le même ordinateur, DISPLAY spécifie simplement le numéro de serveur (par exemple, :0
si vous utilisez un seul serveur X) ou peut-être un serveur et un écran (par exemple :0.0
). Comme il n'y a pas d'adresse IP, cela indique à la bibliothèque X des applications que le serveur est local et que les connexions seront établies en conséquence (probablement via une sorte de transport de mémoire partagée).
Pour indiquer à l'application d'envoyer des données X11 à un nœud distant, incluez une adresse IP dans la DISPLAY
variable. Par exemple export DISPLAY=192.168.1.10:0
,. Cela indiquera à toutes les applications X11 dont elles ont besoin pour ouvrir une connexion TCP au serveur X # 0 sur le nœud 192.168.1.10. Les noms d'hôte DNS sont bien ici, si vous les avez sur votre réseau.
Deux problèmes potentiels
Comme je l'ai écrit dans le premier paragraphe, exécuter simplement Xming peut ne pas être suffisant. Une configuration supplémentaire peut être nécessaire.
La première est que votre serveur X11 doit être configuré pour accepter les connexions des nœuds distants via TCP. De nombreux serveurs X distribués aujourd'hui (je ne connais pas Xming) n'acceptent que les connexions des applications exécutées localement, sauf si vous les configurez explicitement autrement. Il s'agit d'une fonction de sécurité, car chaque socket ouvert est un vecteur potentiel d'attaque.
La seconde est que votre serveur X11 gère une base de données d'hôtes / utilisateurs autorisés à se connecter. Vous devez mettre en liste blanche l'adresse IP de votre Raspberry Pi. Vous pouvez le faire en exécutant la xhost
commande à partir de Xming sur Windows, par exemple, à partir d'une console exécutée dans un xterm. Vous pouvez également taper xhost +
pour désactiver ce contrôle de sécurité, mais c'est dangereux car cela permettra à n'importe quelle application de n'importe où dans le monde d'ouvrir des connexions à votre écran. Si vous êtes derrière un pare-feu sur un LAN où vous faites confiance à tout le monde (par exemple votre propre maison), c'est l'approche la plus simple, mais prenez le temps de configurer correctement xhost
si vous ne l'êtes pas.
Alternative: ssh -Y
En utilisant l'approche ci-dessus, vos applications X11 essaieront toutes d'ouvrir des connexions TCP à votre serveur X. Ces connexions ne sont pas sécurisées. Quelqu'un sur vos paquets d'espionnage LAN peut les intercepter.
Pour résoudre ce problème, au lieu de définir la variable DISPLAY sur le Raspberry pi, utilisez le -Y
paramètre lors de la connexion (par exemple slogin -Y hostname
). Le paramètre -Y (comme -X) créera un tunnel entre les nœuds pour transporter le trafic X11. Cela gardera le trafic X11 crypté et sécurisé. Il affectera également sa propre variable d'environnement DISPLAY afin que les applications utilisent le tunnel. Cela peut également éliminer la nécessité de jouer avec xhost
(car en ce qui concerne votre serveur X) les connexions proviennent localement (du côté d'origine du tunnel SSH).