X11 distant
Par Petaramesh le samedi 26 mai 2007, 11:48 - Informatique non-duelle - Lien permanent
Un peu d'informatique, tiens...
J'ai constaté tout-à-l'heure à ma grande surprise que mon Srî Minîshiva, du haut de ses 4 ans 1/2, est parfaitement capable de filer sans rien demander à personne sur Doudou, l'ordinateur de sa soeur, et d'y taper tout seul comme un grand son login et son mot de passe...
...Avant de dérouler les menus et lancer force jeux sur la machine (ça, je savais déjà qu'il savait faire !) avec évidemment une nette préférence pour les shoot'em down ! et autres kill'em all !
Evidemment, un ordinateur pour deux nains, ça veut dire force disputes, hurlements, baston et mains dans ta goule, le Galaxians donnant l'exemple...
Pendant qu'eux se crèpent joyeusement le chignon, de mon côté, je joue à ouvrir des sessions X[1] à distance sur leur machine, depuis la mienne.
Ça, c'est encore un truc à faire pleurer les Windowziens !
Notes
[1] Et je rappelle aux ignorants qu'une "session X" sur la machine de mes enfants n'a absolument rien de pornographique : Sous Un*x (et GNU/Linux), le serveur X, ou X11R6, ou X11 ou XFree86, ou Xorg, donc on dit plus simpement "X", est simplement le serveur graphique, qui permet de travailler dans un environnement graphique, une "session X" étant donc une session en environnement graphique, et pas plus porno-graphique que les "rayons X" par exemple...
Ce que vous voyez là-haut dans la belle image (cliquouillez pour l'agrandir), c'est une session graphique assez encombrée sur mon brave Totor (GNU/Linux Mandriva / KDE), et dans la grande fenêtre en bas à droite nous avons une session graphique complète ouverte à distance sur la machine Doudou de mademoiselle Patâpatî (GNU/Linux Edubuntu / Gnome).
Pour bien préciser ce dont il s'agit, ce n'est pas une simple "recopie d'écran / prise de contrôle à distance" façon VNC, mais bel et bien une session graphique à distance complète, c'est-à-dire que cette fenêtre de ma machine se comporte comme un terminal X connecté sur la machine de ma fille.
Autrement dit, pendant que mes gosses jouent au Galaxian sur leur machine, connectés sur un de leurs profils utilisateurs, je peux, moi, me connecter simultanément sur leur machine, obtenir un écran d'ouverture de session (gdm), me connecter sous mon profil et lancer un environnement graphique totalement différent du leur, avec mes propres fenêtres, etc., où je peux exécuter mes propres applications, sans aucun rapport avec ce qu'eux sont en train de faire de leur côté, sur la même machine.
Eh oui, une machine GNU/Linux est multitâche à un point que nombre d'utilisateurs n'imaginent pas : On peut sans problème y connecter de multiples terminaux, textes ou graphiques, virtuels ou physiques, en local ou via le réseau.
Dans le cas présent je peux gérer depuis ma machine (Totor) une session graphique distante sur la machine (Doudou) de ma fille de deux manières différentes :
- Soit complètement en plein écran, c'est-à-dire que je travaillerai sur la machine distante exactement comme je le ferais sur ma machine locale (en dehors du fait que l'affichage sera plus lent). Je pourrai passer de la session graphique plein écran de ma machine locale à la session graphique plein écran de la machine distante en utilisant les combinaisons de touches [Ctrl]-[Alt]-[F7] et [Ctrl]-[Alt]-[F8] - exactement comme quand on ouvre deux sessions graphiques d'utilisateurs différents sur la même machine.
- Soit en faisant apparaître la session distante (entière) dans une fenêtre de ma session graphique locale, ce qui se fait en utilisant le "serveur graphique" Xnest (en le lançant avec une commande du genre :
Xnest :5 -once -query doudou)
Pour faire ces belles choses, on utilise :
Sur la machine distante (Doudou) :
Pour pouvoir se logguer sur la machine distante (ici, une Edubuntu), on utilisera le gestionnaire de connexion graphique de l'Ubuntu, à savoir "gdm", et on le configurera simplement de manière à lui permettre d'accepter les connexions distantes utilisant le protocole XDMCP
- ATTENTION : Si vos machines sont connectées directement à un réseau ouvert (Internet...), il faudra veiller, avec le firewall (iptables), à ce que le port XDMCP (177/udp) soit ouvert uniquement pour l'accès depuis une machine locale, sinon on crée un risque de sécurité...
- Pour configurer le gdm de Doudou, j'ai mis dans le fichier
/etc/gdm/gdm.conf-custom:
[daemon] # The greeter for xdmcp logins, usually you want a less graphically intensive # greeter here so it's better to leave this with gdmlogin RemoteGreeter=/usr/lib/gdm/gdmlogin [xdmcp] # Distributions: Ship with this off. It is never a safe thing to leave out on # the net. Setting up /etc/hosts.allow and /etc/hosts.deny to only allow local # access is another alternative but not the safest. Firewalling port 177 is # the safest if you wish to have xdmcp on. Read the manual for more notes on # the security of XDMCP. Enable=true # Honor indirect queries, we run a chooser for these, and then redirect the # user to the chosen host. Otherwise we just log the user in locally. HonorIndirect=false # The number of seconds after which a non-responsive session is logged off. # Better keep this low. PingIntervalSeconds=15 # How many times can a person log in from a single host. Usually better to # keep low to fend off DoS attacks by running many logins from a single host. # This is now set at 2 since if the server crashes then GDM doesn't know for # some time and wouldn't allow another session. DisplaysPerHost=4
...Après quoi, il convient de redémarrer gdm sur Doudou : /etc/init.d/gdm restart
Sur la machine locale (Totor) :
- Il faut s'assurer que notre serveur X accepte d'être contacté depuis le réseau sur le port 6000/tcp (et ports suivants, si plusieurs sessions graphiques sont lancées, ou ouvrira donc par exemple 6000-6015/tcp dans le firewall, et comme plus haut, uniquement pour les machines de notre LAN, sinon on crée un vieux trou de sécurité)
- Si on a un fichier
/etc/X11/xdm/Xservers, veiller à y enlever l'option "-nolisten tcp", si elle figure sur les lignes servant à lancer le(s) serveur(s) X. C'est à partir de là qu'il faudra s'assurer qu'on a correctement firewallé les choses. On aura alors par exemple quelque chose comme :
:0 local /usr/bin/X -deferglyphs 16 :1 local reserve /usr/bin/X :1 vt8 -deferglyphs 16 :2 local reserve /usr/bin/X :2 vt9 -deferglyphs 16 :3 local reserve /usr/bin/X :3 vt10 -deferglyphs 16 :4 local reserve /usr/bin/X :4 vt11 -deferglyphs 16 :5 local reserve /usr/bin/X :5 vt12 -deferglyphs 16
- Si on utilise le gestionnaire de connexion kdm (comme sur ma Mandriva), on modifiera son fichier de configuration
/etc/kde/kdm/kdmrcde la manière suivante : - On pourra (optionnellement) ajouter la nouvelle machine à la liste des "machines distantes disponibles", avec une ligne du genre :
ChooserHosts=*,doudou - Si on a "
-nolisten tcp" sur la ligne "ServerArgsLocal", on veillera à enlever cette option qui empêcherait notre serveur X d'être contacté par le distant.
...Et on redémarrera notre kdm (service kdm restart)[1]
À partir de là :
- Nous devrions être capables de démarrer facilement une session sur la machine distante, plein écran, depuis notre kdm, en choisissant simplement "Menu / Connexion distante", puis en sélectionnant (ou tapant le nom de) la machine à laquelle on souhaite se connnecter (Doudou). On obtiendra alors son propre gdm, sur lequel on pourra ouvrir la session.
=> Attention, Gnome est buggué ! L'ouverture de session Gnome sur une machine Ubuntu distante foirera (écran vide, puis avec une fenêtre grise elle aussi vide) si on ne décoche pas le "Son ESD" dans les "Préférences du son" (ce qu'on devra donc faire en local avant de tenter de se connecter à Gnome à distance...). On n'a pas ce problème avec KDE ;-)
- Si nous voulons ouvrir "une session distante dans notre session graphique locale", nous utiliserons le serveur graphique Xnest (il faut donc installer le paquetage corespondant), et nous lancerons Xnest avec une ligne de commande comme :
Xnest :5 -once -query doudou
Et voilou !
=> Xnest a une limite bête et con : On se trouve dans Xnest avec une disposition de clavier américain QWERTY... Et je n'ai pas trouvé le moyen d'y couper (Tout tuyau apprécié !). Personnellement, j'arrive à m'en accomoder, mais ça risque de gêner très fort ceux qui ne connaissent pas par coeur la disposition du clavier QWERTY...
On notera enfin que le mode d'accès "plein écran" (Une session graphique pour la machine locale, une autre pour la machine distante, et la combinaison de touches [Ctrl]-[Alt]-[Fn] pour passer de l'une à l'autre) est considérablement plus performant que le mode faisant appel à Xnest. Par ailleurs, outre le problème de clavier d'Xnest (qui n'existe pas en mode plein écran), Xnest est également assez instable et il arrive fréquemment qu'il se plante (sa fenêtre disparaît) si on passe sur un autre bureau virtuel que celui sur lequel il est affiché. Pour ces raisons, je conseille vivement d'ouvrir une session graphique distante en mode plein écran, et là, on a vraiment l'impression de passer instantanément d'une machine à une autre par [Ctrl]-[Alt]-[Fn].
Notes
[1] Ce qui tuera notre sessions graphique courante, si nous en avons une !)










Commentaires
Mais que je me sens être peu de chose là....
Bon, m'en fous, sur mon iMac moa ossi j'ai MON X11, pour taper sur OOffice !
Na!
Prendre des cours de dactylo en Suisse, rhhh ! rrrh! rrrh! (ceux qui ont des tuyaux sur l'orthographe exacte d'un ricannement sardonique, je prends )
En Suisse, c'est QWERTZ, pas QWERTY, il me semble... Une disposition de clavier que seuls les suisses connaissent, avec des trous comme dans le gruyère (ah non, il paraît qu'il n'y a pas de trous, dans le gruyère...)
hmmm... je n'ai pas ta pratique d'UNIX, mais pourquoi ne pas simplement utiliser un ssh -X ?
En plus ça éviterait que la chair de ta chair utilise ethereal pour capturer ton numéro d'adhérent à l'UMP et s'en servir comme moyen de chantage...
@Urchin : "
ssh -X" est approprié pour lancer une application distante en mode graphique sur le X11 local, mais pas vraiment pour lancer une session graphique complète (i.e. une session Gnome ou KDE full-featured avec le fond d'écran, les menus, le gestionnaire de fenêtres et tout le pataquès).De plus le chiffrement SSH a un impact non-négligeable sur les performances pour une application graphique, aussi pourquoi se le farcir sur un LAN où il est inutile ?
Là, travailler en "terminal X distant" comme c'est prévu pour me paraît bien plus indiqué.
@ neLLie:
Te laisse pas avoir, il le fait exprès pour nous démoraliser.
Si ça se trouve, ça veut rien dire du tout, tout son charabia.
ben c un peu chinois ton truc.......
mais ça m'amuserait de connecter mon e mac avec le pc de mon fils (alors là si qqn peut m'expliquer ?)
pour voir ce qui traine sur son ordi.....photos de cul......
La maison n'expliquera pas comment espionner sournoisement la machine d'autrui. Même si la maison sait faire.
Bonne chance ! Moi j'ai deux frangins, et on avait qu'un ordi. Donc ça tannait sec, mais on est rapidement passé à deux ordis.
Par contre un jour on a découvert que le plus petit des deux frangins, qui avait à peu près le même âge que ton nain, savait lancer les jeux sous DOS (et oui, y avait que Windows 3.1 à l'époque, et niveau compatibilité avec les jeux c'était pas top).
On a compris que ça serait un grand abruti de l'ordi (ce qui nous est confirmé chaque jour depuis) le jour où on l'a surpris sur un shoot'em up (Wolfenstein 3D pour les connaisseurs) en train de hurler "Je prend le couteau pour tuer les chiens !".
Aujourd'hui, il est en terminale, il y passe tout son temps libre, sauf quand il sort avec ses potes, et veut en faire son métier dans l'infographie.
Bref, les virus, ça s'attrape tôt !
@swami
mon fils est outré de ma demande et moi ptdr.........(il a lu mon post et ton post..)
;-))))
Xnest -help 2>&1| grep -i keyboard
Je viens de devoir mettre l'adresse MAC de la gateway en static car quelqu'un jouer avec arpspoof.
Chez moi, SSH est une question de survie.
Chez les amis en wifi, c'est VPN (c'est pas que je n'ait pas confiance mais le fingerprint de mon serveur ssh a tendance à changer et les flux http sont modifié).
@Swami
Tu as déjà essayé freenx ? La vitesse d'affichage est quasi identique à celle d'une session locale. Et pour une session distante sur ligne adsl je n'ai pas trouvé mieux, le résultat est surprenant.
Attention, Gnome est buggué !
Non? j'y crois pas.
Tu veux un autre bug de gdm? facile. Met un virtual plus grand que le réel en taille d'écran par défaut dans le xorg.conf. Remet le réel dans ta session gnome avec l'outil taille de l'écran. Et demande à basculer d'utilisateur. Chez moi c'est un plantage radical.
Tiens tu devrais le tester avec kdm.
Oublie pas de leur mettre un excellent logiciel de géométrie dynamique, à tes bambins.
Comme ça tu pourras réviser avec eux. J'ai dans l'idée que les joies de la géométrie au compas et à la règle sont ce qu'il te faut pour te détendre.
Tu ne dis pas dans quelle section mettre ChooserHosts
Pour le clavier français dans Xnest, juste ajouter "-kb" ... Merci pour cette page. Amitiés.
Quelqu'un a-t-il des infos sur la loi Fourtou en cours de discussion et en vois d'adoption? Le risque de contrôle par les majors est-il réel?
@philhippe57 : Bien que la question soit relativement hors-sujet par rapport à ce billet, la réponse semble , voir eucd.info, et une fois de plus (mais on commence à être fortement habitués) nos représentants à l'assemblée et au sénat s'apprêtent à voter comme une lettre à la poste une nouvellle loi qui est non seulement préjudiciable aux intérêts des citoyens qu'ils représentent et qui les ont élus, au seul bénéfice des intérêts financiers de puissantes entités commerciales dont les lobbies ne dorment jamais, et qui de plus viole allègrement un certain nombre de principes fondamentaux du droit. Ceci dans une indifférence quasi générale, la question intéressant considérablement moins de monde que celle des retraites. Mais c'est toujours par les questions "techniques" intéressant peu de monde que les plus essentielles des libertés sont rognées : le coin est mis dans le bois...
Je ne vois guère d'autre mot que celui de forfaiture (incompétence et naïveté restant extrêmement loin du compte) pour qualifier la majeure partie de l'action de "nos représentants" ces dernières années. Ou du moins de la majorité d'entre-eux, ceux par qui passent les lois et trépasse la liberté.