Avec le transfert SSH X11 (`ssh -X`), obtenez` Impossible d'ouvrir l'affichage` en essayant d'exécuter les applications X

22

Je peux me connecter pour séparer en utilisant

ssh -X Hostip

mais quand je lance la commande xclock cela me donne cette erreur

Error: Can't open display: localhost:11.0

Je vérifie ma valeur d'affichage à l'aide de

echo $DISPLAY

et le résultat est

localhost:11.0

Et le transfert X11 est défini sur OUI dans le fichier sshd_config

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

Un conseil ce qui me manque ici?

OmiPenguin
la source
3
Avez-vous essayé -Yau lieu de -X?
Flup
2
Assurez-vous également de comprendre les implications de l'utilisation -Yau lieu de -X. Vous pouvez également regarder xhost.
un CVn du
1
Pour RedHat / CentOS 7 (au moins), vous avez besoin du paquet xorg-x11-xauth, selon ma réponse ici: unix.stackexchange.com/questions/138936/…
Mike S

Réponses:

18

Utilisez -Y. Depuis la page de manuel sur ssh:

-Y Active le transfert X11 de confiance. Les transferts X11 approuvés ne sont pas soumis aux contrôles d'extension X11 SECURITY.

Si vous rencontrez toujours des problèmes, vous pouvez essayer de définir $DISPLAYl'IP de votre box local :

$ export DISPLAY='<ip_address>:11.0'

Il peut être utile de le définir comme

$ export DISPLAY='127.0.0.1:11.0'

Les gens semblent avoir ce problème généralement lorsque ssh'ing de Mac OS X . Vous pouvez également définir

X11UseLocalhost no

dans ce cas également.

Kyle Kelley
la source
1
En utilisant XQuartz, je n'ai pas pu utiliser l'indicateur -Y. "Connexion X11 rejetée en raison d'une mauvaise authentification."
Erik
5
même après avoir essayé vos autres suggestions, je ne parviens pas à ouvrir un affichage.
Erik
2
Ni l'un ni l'autre n'a fonctionné pour moi non plus. J'avais besoin d'installer le support XWindow sur mon serveur Centos 7 (minimum) avec: yum groupinstall "X Window System" -y
Mark Edington
@MarkEdington c'est parce que RedHat / CentOS nécessite le paquet xorg-x11-xauth, selon ma réponse ici: unix.stackexchange.com/questions/138936/…
Mike S
6

cela a fonctionné pour moi:

Changement

X11UseLocalhost yes

à

X11UseLocalhost no
Don
la source
Merci, Don. cela a fonctionné pour moi aussi. Je t'ai donné un vote positif. Je crois que le problème qui interfère avec la valeur par défaut est que la machine spécifique est activée sur xhost.
LD James
6
sur l'invité? hôte? quel fichier de configuration? merci pour compléter votre réponse
Philippe Gachoud
Je l'ai fait fonctionner en supprimant les paramètres /etc/ssh/sshd_config.
llinfeng
6

Nous remercions /unix//a/12772/61349 pour leurs instructions de diagnostic.

Assurez-vous que votre client ssh demande le transfert X11 avec l' indicateur -v

ssh example.com -X -v

Et recherchez le message spécifique:

debug1: Requesting X11 forwarding with authentication spoofing.

Un autre signe de problème révélateur est l'absence de la DISPLAYvariable d'environnement définie pour vous. S'il est vide / non défini, il y a quelque chose qui ne va pas. Au moins selon le même article crédité ci - dessus , ces variables sont définies automatiquement pour vous.


J'utilisais un SSH Control Master mes connexions ssh comme ceci:

Host <hostname>
    ControlMaster auto
    ControlPath ~/.ssh/control/%r@%h:%p
    ControlPersist 10m

Ma connexion ssh précédente n'avait pas demandé X11Firwarding, donc sshles options de l'appel futur n'étaient pas utilisées. Donc pour moi,

ssh -Xétait tout simplement ignoré

Si vous ne voyez pas "Requesting X11 Forwarding", mais vous voyez le muxer réutiliser les sessions;

debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 10

Ensuite, vous devez quitter votre ControlMaster actuel pour cette connexion et vous reconnecter avec l'indicateur -X / -Y.

Pour arrêter votre ControlMaster

ssh -O check <hostname>

Master running (pid=2758)

(Cela fermera toutes les connexions actives à l'aide du ControlMaster)

ssh -O exit <hostname>

Exit request sent.
ThorSummoner
la source
3

Lors de la tentative de transfert vers XQuartz sur macOS, j'ai résolu le problème en exécutant la sshcommande ( ssh -Ydans mon cas) à partir du terminal XQuartz (ouvert en cliquant avec le bouton droit sur l'icône XQuartz dans le dock et en cliquant sur Applications> Terminal).

Harry Cutts
la source
cela a fonctionné pour moi
dli
3

Ce qui a résolu cela pour moi, c'est simplement d'installer xauth, une fois terminé, cela a fonctionné comme un charme!

Mostafa
la source