Lorsque SSH avait installé localement sur mon ordinateur (ne demandez pas, c'est une solution de contournement), je ne peux pas démarrer d'applications graphiques sans exécuter:
export DISPLAY=:0.0
Si je lance d'abord cette application, puis une application graphique, les choses se passent bien. Sinon, cela ne fonctionne pas, il n'y a pas d'affichage à attacher.
Existe-t-il une commande permettant de répertorier tous les affichages disponibles (c.-à-d. Toutes les valeurs possibles) sur une machine?
( DISPLAY=:0 yourapp & )
.w
. Plus d'infos: liste des noms d'affichage X existants?Réponses:
Si vous souhaitez que la connexion X soit transférée via SSH, vous devez l'activer à la fois côté serveur et côté client. (Selon la distribution, il peut être activé ou désactivé par défaut.) Sur le côté serveur, assurez-vous que vous avez
X11Forwarding yes
in/etc/sshd_config
(/etc/ssh/sshd_config
ou où que se trouve le fichier de configuration). Du côté client, passez l’-X
option à lassh
commande , ou insérezForwardX11
votre~/.ssh/config
.Si vous courez
ssh -X localhost
, vous devriez voir que$DISPLAY
c'est (probablement)localhost:10.0
. Contraste avec:0.0
, qui est la valeur lorsque vous n'êtes pas connecté via SSH. (La.0
partie peut être omise; c'est un numéro d'écran, mais plusieurs écrans sont rarement utilisés.) Il existe deux formes d'écrans X que vous risquez de rencontrer::
.:
.Avec
ssh -X localhost
, vous pouvez accéder au serveur X via les deux écrans, mais les applications utiliseront une méthode différente::NUMBER
accéder au serveur via des sockets locales et la mémoire partagée, alors que l’HOSTNAME:NUMBER
accès au serveur via TCP est plus lent et désactive certaines extensions.Notez que vous avez besoin d’un formulaire d’autorisation pour accéder à un serveur X, appelé cookie, qui est normalement stocké dans les coulisses du fichier
~/.Xauthority
. Si vous utilisez ssh pour accéder à un autre compte utilisateur ou si votre distribution place les cookies dans un fichier différent, vous constaterez queDISPLAY=:0
cela ne fonctionne pas dans la session SSH (maisssh -X
que, s'il est activé sur le serveur, vous ne le ferez jamais. besoin deXAUTHORITY
jouer avec en faisantssh -X
). Si cela pose un problème, vous devez définir laXAUTHORITY
variable d'environnement ou obtenir les cookies de l'autre utilisateur .Pour répondre à votre question actuelle:
Les affichages locaux correspondent à un socket en
/tmp/.X11-unix
.Les affichages distants correspondent aux ports TCP ouverts supérieurs à 6000; l'accès au numéro d'affichage N sur la machine M se fait en se connectant au port TCP 6000 + N sur la machine M. À partir de la machine M elle-même:
(Le reste de ce point est d'intérêt académique seulement.)
À partir d’une autre machine, vous pouvez utiliser
nmap -p 6000-6099 host_name
pour détecter les ports TCP ouverts dans la plage habituelle. De nos jours, il est rare que les serveurs X écoutent sur un socket TCP, en particulier en dehors de l'interface de bouclage.À proprement parler, une autre application pourrait utiliser un port de la gamme habituellement utilisée par les serveurs X. Vous pouvez savoir si un serveur X est à l'écoute en vérifiant quel programme a le port ouvert.
Si cela indique quelque chose d'ambigu
sshd
, par exemple, il est impossible de savoir avec certitude s'il s'agit d'un serveur X ou d'une coïncidence.la source
L'affichage est le premier argument de
Xorg
. Vous pouvezps
alorsXorg
sortir.Vous pouvez ensuite le
awk
placer dans le format de votre choix.la source
ps aux |grep X
a fonctionné mieux pour moiw
affiche toutes les personnes connectées et leur affichage.DISPLAY=:0 netsurf "https://medium.com/"
... ou utilisez-leexport DISPLAY=:0
pour partager le var avec le processus, pas uniquement le shell[Edit: j'ai couru une instance de Xnest pour voir si cela l'attraperait - ce n'est pas; il ne capture que les coquilles de connexion ('w' est l'abréviation de 'who'). Retour à la planche à dessin pour moi.] [Edit: Trouvé le:
]
la source
ps xeww | grep DISPLAY=:1024
maintenant c'est bizarre. J'exécute chrome-remote-desktop sur l'écran 20 ainsi.w
ne fonctionne pas si aucune application n'est en cours d'exécution sur le serveur x (y compris aucun gestionnaire de fenêtres et aucun bureau). Maisls /tmp/.X11-unix
ça marche.fera le travail en listant tous les DISPLAY actuels. Vous pouvez aussi voir les affichages assignés à un utilisateur spécifique ($ usr) avec:
la source
ps e -u $USER | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u
?Dans le
/tmp
dossier, il peut également y avoir des.X??-lock
fichiers avec??
les numéros de session.Vous devez les supprimer si vous souhaitez réutiliser un numéro de session.
Vous pouvez les voir en utilisant
ls -a
normalement les fichiers commençant par un.
sont cachés.la source