Lorsque j'exécute certains programmes sur SSH, tels que firefox &
, un message d'erreur s'affiche.
Error: no display specified
Je voudrais ouvrir de nombreux affichages, montrant toujours la stdout
de chaque programme.
Question initiale: Comment puis-je spécifier l’affichage pour obtenir un programme à afficheurs multiples?
Pablo Santa Cruz me donne le code suivant comme solution. Je ne comprends pas.
$ export DISPLAY=yourmachine.yourdomain.com:0.0
$ firefox &
Quels sont yourmachine
et yourdomain.com
dans la commande?
Le fonctionnement de X est identique à celui de tout programme réseau. Vous avez un serveur d'une certaine description (dans ce cas, le serveur d'affichage X) qui s'exécute sur une machine spécifique et vous avez des clients X (tels que firefox) qui tentent de se connecter à ce serveur pour obtenir leurs informations affichées.
Souvent (sur les ordinateurs «domestiques»), le client et le serveur fonctionnent sur le même boîtier et il n’existe qu’un seul serveur, mais X est suffisamment puissant pour que cela ne soit pas nécessaire. Il a été construit avec la séparation serveur/client intégrée depuis le début.
Cela vous permet de faire des choses merveilleuses telles que vous connecter à votre boîte (en mode texte) à l'autre bout de la planète, lui dire que le serveur d'affichage est la boîte sur laquelle vous vous trouvez et, voila, les fenêtres commencent soudainement à apparaître localement.
Pour qu'un client puisse interagir avec un utilisateur, il doit savoir comment trouver le serveur. Il y a un certain nombre de façons de le faire. De nombreux clients permettent à l'option -display
ou --display
de la spécifier:
xeyes -display paxbox1.paxco.com:0.0
Beaucoup utiliseront la variable d'environnement DISPLAY
si aucun affichage n'est spécifié. Vous pouvez définir cette variable comme n'importe quelle autre:
DISPLAY=paxbox1.paxco.com:0.0; export DISPLAY # in .profile
export DISPLAY=paxbox1.paxco.com:0.0 # in your Shell
DISPLAY=paxbox1.paxco.com:0.0 firefox & # for that command (Shell permitting)
La première partie de la variable DISPLAY
est uniquement l'adresse de la machine du serveur d'affichage. Il suit la même règle que toute autre adresse IP; il peut s'agir d'un nom DNS pouvant être résolu (y compris localhost
) ou d'une adresse IP spécifique (telle que 192.168.10.55).
La deuxième partie est spécifique à X. Il donne le numéro "d'affichage" X (serveur X) et le numéro d'écran à utiliser. Le premier (numéro d’affichage) fait généralement référence à un groupe de périphériques contenant un ou plusieurs écrans mais avec un seul clavier et une seule souris (c’est-à-dire un flux d’entrée). Le numéro d'écran indique généralement l'écran spécifique de ce groupe.
Un exemple serait:
+----------------------------------------+
|paxbox1.paxco.com| |
+-----------------+ |
| |
| +----------+----+ +----------+----+ |
| |Display :0| | |Display :1| | |
| +----------+ | +----------+ | |
| | | | | |
| | +-----------+ | | | |
| | |Screen :0.0| | | | |
| | +-----------+ | | | |
| | +-----------+ | | | |
| | |Screen :0.1| | | | |
| | +-----------+ | | | |
| | +-----------+ | | +-----------+ | |
| | |Screen :0.2| | | |Screen :1.0| | |
| | +-----------+ | | +-----------+ | |
| | +-----------+ | | +-----------+ | |
| | |Screen :0.3| | | |Screen :1.1| | |
| | +-----------+ | | +-----------+ | |
| | +-----------+ | | +-----------+ | |
| | | Keyboard | | | | Keyboard | | |
| | +-----------+ | | +-----------+ | |
| | +-----------+ | | +-----------+ | |
| | | Mouse | | | | Mouse | | |
| | +-----------+ | | +-----------+ | |
| +---------------+ +---------------+ |
| |
+----------------------------------------+
Ici, vous avez un seul ordinateur (paxbox1.paxco.com
) avec deux serveurs d’affichage. Le premier a quatre écrans et le second en a deux. Les possibilités sont alors:
DISPLAY=paxbox1.paxco.com:0.0
DISPLAY=paxbox1.paxco.com:0.1
DISPLAY=paxbox1.paxco.com:0.2
DISPLAY=paxbox1.paxco.com:0.3
DISPLAY=paxbox1.paxco.com:1.0
DISPLAY=paxbox1.paxco.com:1.1
en fonction de l'endroit où vous souhaitez que vos fenêtres apparaissent et des périphériques d'entrée que vous souhaitez utiliser.
$ export DISPLAY=yourmachine.yourdomain.com:0.0
$ firefox &
Lorsque vous vous connectez à une autre machine via SSH, vous pouvez activer le transfert X dans SSH afin que les fenêtres X soient transférées chiffrées via le tunnel SSH vers votre machine. Vous pouvez activer le transfert X en ajoutant -X
à la ligne de commande ssh ou en définissant ForwardX11 yes
dans votre fichier de configuration SSH.
Pour vérifier si le X-Forwarding a été configuré avec succès (le serveur peut ne pas le permettre), essayez si echo $DISPLAY
génère quelque chose comme localhost:10.0
.
Essayer
export DISPLAY=localhost:0.0
Essayez d’installer le paquet xorg-x11-xauth .
J'ai rencontré un problème similaire, alors peut-être que cette réponse aidera quelqu'un.
La raison de l'erreur Error: no display specified
est que Firefox est en cours de lancement, mais aucun serveur X (interface graphique) ne s'exécute sur l'hôte distant. Vous pouvez utiliser le transfert X11 pour exécuter Firefox sur l'hôte distant, mais l'afficher sur votre hôte local. Sous Mac OS X, vous devez télécharger XQuartz pour utiliser le transfert X11. Sans cela, vous n'aurez pas de variable $DISPLAY
, donc si vous essayez avec echo $DISPLAY
, elle sera vide.
J'ai rencontré le même problème aujourd'hui. Voici donc une solution simple: lorsque vous utilisez SSH sur la machine, ajoutez simplement Ctrl - Y.
ssh user@ip_address -Y
Après la connexion, tapez firefox &
. Et vous êtes prêt à partir.
connectez-vous à votre serveur via
ssh -X root@yourIP
editez le fichier/etc/ssh/sshd_config et ajoutez-y cette ligne.
X11UseLocalhost no
Redémarrez sshd. pour CentOS ( vérifiez votre distribution )
/sbin/service sshd restart
vérifiez votre AFFICHAGE
echo $DISPLAY
tu devrais voir ça
yourIP:10.0
Prendre plaisir
firefox
Veuillez ne PAS essayer de définir $ DISPLAY manuellement lors de la connexion via SSH.
Si vous vous connectez via SSH -X
et que $ DISPLAY reste vide, cela signifie généralement qu'aucun canal crypté n'a pu être établi.
Il est fort probable que le paquet xauth
ou xorg-x11-xauth
soit manquant. Essayez de l'installer sur la machine distante en utilisant:
Sudo apt-get install xauth
ou
Sudo apt-get install xorg-x11-xauth
Après cela, redémarrez votre connexion SSH. N'oubliez pas d'utiliser SSH -X
pour que la sortie X Window soit transmise à votre ordinateur local.
Essayons maintenant echo $DISPLAY
again pour voir si $ DISPLAY a été défini automatiquement par le démon SSH. Il devrait vous montrer une ligne avec une adresse IP et un port.
Même j'ai fait face à la même chose dans CentOS 6.8.
yum reinstall xorg*
Terminez votre session en cours et ouvrez une autre session dans un outil tel que mobiXterm. Assurez-vous que le transfert X11 de la session est activé dans l'outil.
I à travers vnc pour comprendre le X11 plus . Pour spécifier l’affichage permettant d’obtenir un programme à plusieurs affichages,
Par exemple,
vncserver :2
vncserver -list
echo '$DISPLAY'=$DISPLAY
export DISPLAY=:2 # export DISPLAY=IP:DisplayNum or export DISPLAY=:DisplayNum for localhost; So that can vnc connect and see the vnc desktop :2 if $DISPLAY is not :2.
echo '$DISPLAY'=$DISPLAY