
Zunächst einmal, was ich tun möchte:
Ich möchte mich über bei einem Server anmelden ssh
. Dann ändere ich den Benutzer über sudo su user
und starte eine Anwendung auf meinem Bildschirm.
Einige Kollegen tun dies, indem sie
su user
export DISPLAY=<IP>:0
und es funktioniert.
Ich verbinde mich per mit einem Server ssh -X user@server
. Dann starte ich eine X11-Anwendung. Das funktioniert einwandfrei (es gibt allerdings Warnungen).
Warnungen:
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
Wenn ich sudo su
(oder sudo su user
) ausführe und das Programm starte oder es über ausführe, sudo myprogram
tritt ein Fehler auf.
Fehler:
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
Ich habe einige Artikel zu diesem Problem gefunden.
Die X11-Weiterleitung schlägt beim Benutzerwechsel fehl
SSH-Verbindung. X11-Verbindung wegen falscher Authentifizierung abgelehnt
Erweitern Sie also die /etc/pam.d/su
Datei und die /etc/pam/sudo
Datei um
session optional pam_xauth.so
Und später habe ich /etc/ssh/sshd_config
Folgendes hinzugefügt:
X11Forwarding yes
und Neustart des sshd durch systemctl restart ssh.service
. ssh -T
sagtx11forwarding yes
Aber es änderte sich nichts.
Weiß jemand, was zu tun ist? Es ist wichtig, nach dem Vornehmen von Änderungen einige Änderungen an den Programmkonfigurationen des Benutzers zu überprüfen.
Antwort1
Da viele Leute mit der gleichen Fehlermeldung hierher kommen und nicht erkennen, dass diese nichts mit der Verwendung von zu tun hat su
, möchte ich darauf hinweisen, dass ähnliche Symptome jetzt aus einem ganz anderen Grund auftreten:
Alles, was mit Snap installiert wurde, funktioniert nicht. xeyes
Und xclock
könnte also funktionieren, aber eine Neuinstallation von chromium-browser
oder firefox
auf Ubuntu funktioniert nicht.
export XAUTHORITY=$HOME/.Xauthority
Die Problemumgehung besteht darin, vor dem Ausführen der Remote-X11-Anwendung einfach Folgendes auszuführen :
Antwort2
UnsicherMöglichkeit:
Führen Sie auf dem Host, von dem aus Sie sich anmelden,
xhost +
oder nur ein wenig sicherer
xhost <IP you want to log in to>
Dadurch werden Verbindungen vom Remote-Host ermöglicht.
Warum ist das unsicher? Jedes Programm und jeder Benutzer von diesem Host (oder jedes Programm/jeder Benutzer von jedem Host mit xhost +
) kann auf Ihren Bildschirm zugreifen und alle Tastendrücke auf dem Computer lesen, xhost
auf dem Sie ausführen.
SichererMöglichkeit:
Fügen Sie dem Remotecomputer den Autorisierungsschlüssel für Ihren X11-Server hinzu:
Listen Sie auf dem lokalen Computer das erforderliche „Magic Cookie“ auf:
# xauth list
hostname/unix:0 MIT-MAGIC-COOKIE-1 0123456789abcdef0123456789abcdef
Fügen Sie auf dem Remotecomputer das Geheimnis zu Ihrer ~/.Xauthority
Datei hinzu. Am einfachsten geht das wieder mit xauth
:
# setenv DISPLAY <ORIGIN_IP>:0
# xauth add <ORIGIN_IP>:0 MIT-MAGIC-COOKIE-1 0123456789abcdef0123456789abcdef
Bitte beachten Sie, dass die X11-Protokolldaten zwischen diesen Maschinen weiterhin unverschlüsselt und daher anfällig für Angriffe sind.
Antwort3
Angenommen, Benutzer1 ist der ursprüngliche Benutzer (dessen Kennwort Sie kennen) und Benutzer2 ist der Zielbenutzer (Kennwort unbekannt), kann ich Folgendes zum Laufen bringen:
% ssh -Y user1@target-box
Password: xxxxxxxxxxxxx
user1@target-box% sudo -u user2 bash
Password: xxxxxxxxxxxxx
user2@target-box% cp ~user1/.Xauthority ~user2
user2@target-box% xterm &
Beachten Sie, dass dies auch die korrekte SSHD-Konfiguration voraussetzt, die Sie in Ihrem Beitrag angegeben haben.