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.
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.