web-dev-qa-db-fra.com

X11 Connexion rejetée en raison d'une mauvaise authentification

Tout d'abord ce que je veux faire:

Je veux me connecter à un serveur via ssh. Puis changez changer l'utilisateur via Sudo su user et démarrez une application sur mon écran.

Certaines collègues le font par

su user
export DISPLAY=<IP>:0

un ça fonctionne.


Je me connecte à un serveur via ssh -X user@server. Ensuite, je démarre une application X11. Cela fonctionne bien (bien qu'il y ait des avertissements).

Mises en garde:

libEGL warning: DRI3: failed to query the version
libEGL warning: DRI2: failed to authenticate
qt.qpa.xcb: QXcbConnection: XCB error: 1 (BadRequest), sequence: 414, resource id: 1897, major code: 155 (Unknown), minor code: 1

Si je cours Sudo su (ou Sudo su user) et démarrer le programme ou exécutez-le via Sudo myprogram il y a une erreur.

Erreur:

X11 connection rejected because of wrong authentication.
qt.qpa.xcb: could not connect to display localhost:11.0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
    This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Aborted

J'ai trouvé des articles sur ce problème.

x11 Transfert échoue lors de la commutation des utilisateurs

Connexion SSH. X11 Connexion rejetée en raison d'une authentification incorrecte


Donc, prolongez le /etc/pam.d/su fichier et le /etc/pam/Sudo fichier par

session  optional  pam_xauth.so 

Et plus tard j'ai changé /etc/ssh/sshd_config en ajoutant:

X11Forwarding yes

et redémarrer le sshd par systemctl restart ssh.service. ssh -T dit x11forwarding yes

Mais rien n'a changé.

Est-ce que quelqu'un sait quoi faire? Il est important de vérifier certaines modifications des configurations du programme des utilisateurs après modification.

1
Andy A.

Option non sécurisée :

Sur l'hôte à partir de laquelle vous vous connectez, exécutez

xhost +

ou seulement un peu plus sûr

xhost <IP you want to log in to>

Cela permettra aux connexions de l'hôte distant.

Pourquoi est-ce peu sûr? Tout programme et utilisateur de cet hôte (ou tout programme/utilisateur de n'importe quel hôte, avec xhost +) Sera capable d'accéder à votre écran et de lire toutes les appuis sur la touche sur la machine que vous exécutez xhost ON.

Option plus sécurisée :

Ajoutez la clé d'autorisation de votre serveur X11 à la machine distante:

Sur la machine locale, énumérez le "cookie magique" nécessaire:

# xauth list
hostname/unix:0  MIT-MAGIC-COOKIE-1  0123456789abcdef0123456789abcdef

Sur la machine distante, ajoutez le secret de votre ~/.Xauthority Fichier, plus facile à nouveau avec xauth:

# setenv DISPLAY <Origin_IP>:0
# xauth add <Origin_IP>:0 MIT-MAGIC-COOKIE-1 0123456789abcdef0123456789abcdef

Veuillez noter que les données de protocole X11 entre ces machines sont toujours non criminelles et donc sujettes aux attaques.

1
Ned64