3 votes

Des erreurs surviennent lors du rattachement à une session GNU screen qui tunnelise X sur SHH

Après avoir tunnelisé X sur une connexion SSH en utilisant screen sur la machine distante, comment puis-je rattacher la session screen depuis une autre machine et tunneliser X vers cette autre machine ?

J'obtiens soit des erreurs du type "Impossible d'ouvrir l'affichage", soit l'application se connecte au premier ordinateur. Je suppose que cela a quelque chose à voir avec les variables ENV dans la session d'écran, mais je ne sais pas comment corriger l'erreur.

4voto

James Mertz Points 390

Lorsque vous utilisez écran vous devrez copier manuellement les variables d'environnement requises.

Détacher de la écran session, exécuter echo $DISPLAY et copier la valeur.

Maintenant, rattachez et exécutez export DISPLAY="_copied value_" .


Lorsque vous créez une session Screen, le écran hérite automatiquement d'une copie de l'environnement actuel, qui est également héritée par les shells ou autres processus que vous démarrez dans de nouvelles fenêtres d'écran à l'intérieur de la session.

xterm                        (DISPLAY=":0")
 bash                     (DISPLAY=":0")
     screen (client)      (DISPLAY=":0")
         SCREEN (server)  (DISPLAY=":0")
             irssi        (DISPLAY=":0")
             mutt         (DISPLAY=":0")
             bash         (DISPLAY=":0")

Lorsque vous vous connectez par SSH avec la redirection X11 activée, le serveur SSH définit l'adresse de l'utilisateur. $DISPLAY variable d'environnement pointant vers votre serveur X11.

Cependant, lorsque vous vous rattachez à une session Screen, les processus s'exécutant dans cette session ne le verront pas ; ils détiennent toujours des copies de l'objet vieux l'environnement.

sshd                         (DISPLAY="localhost:12")
 bash                     (DISPLAY="localhost:12")
     screen (client)      (DISPLAY="localhost:12")

SCREEN (server)              (DISPLAY=":0")
 irssi                    (DISPLAY=":0")
 mutt                     (DISPLAY=":0")
 bash                     (DISPLAY=":0")

En effet, un processus n'est pas autorisé à mettre à jour les environnements d'autres processus, mais uniquement les siens. Même si le écran Le processus client dispose du nouvel environnement, mais il ne peut pas le donner à l'utilisateur. écran le protocole utilisé par Screen ne dispose pas d'une telle fonction.

D'autres multiplexeurs, tels que tmux permettent aux clients d'envoyer une copie de leur environnement au serveur lors du rattachement. Ce n'est pas complètement efficace ; cela ne permet qu'aux clients nouvellement ouverts d'envoyer une copie de leur environnement au serveur. tmux Windows pour hériter du nouvel environnement, mais toujours ne peut rien faire à propos de Windows qui fonctionne déjà.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X