인증 오류로 인해 X11 연결이 거부되었습니다.

인증 오류로 인해 X11 연결이 거부되었습니다.

내가 가장 먼저 하고 싶은 일은:

서버에 로그인하고 싶습니다 ssh. 그런 다음 변경 사용자를 변경 sudo su user하고 내 화면에서 일부 앱을 실행하십시오.

몇몇 동료들이 이런 일을 해요.

su user
export DISPLAY=<IP>:0

효과가있다.


을 통해 서버에 연결합니다 ssh -X user@server. 그런 다음 X11 응용 프로그램을 시작합니다. 이것은 잘 작동합니다(경고에도 불구하고).

경고하다:

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

sudo su(또는 ) 을 실행 sudo su user하고 프로그램을 시작하거나 실행하면 sudo myprogram오류가 발생합니다.

실수:

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

이 문제에 대한 몇 가지 기사를 찾았습니다.

사용자 전환 시 X11 전달이 실패함

SSH 연결. 인증 오류로 인해 X11 연결이 거부되었습니다.


따라서 /etc/pam.d/su파일과 /etc/pam/sudo파일을 다음으로 확장합니다.

session  optional  pam_xauth.so 

나중에 다음을 추가하여 변경했습니다 /etc/ssh/sshd_config.

X11Forwarding yes

sshd를 다시 시작하면 됩니다 systemctl restart ssh.service. ssh -T설명하다x11forwarding yes

그러나 아무것도 변하지 않았습니다.

무엇을 해야할지 아는 사람 있나요? 변경한 후에는 사용자 프로그램 구성의 특정 변경 사항을 확인하는 것이 중요합니다.

답변1

많은 사람들이 동일한 오류 메시지를 가지고 여기에 와서 그것이 의 사용과 아무 관련이 없다는 사실을 깨닫지 못할 것이기 su때문에 현재 매우 다른 이유로 유사한 증상이 발생하고 있음을 지적하고 싶습니다.

Snap을 사용하여 설치된 모든 항목은 작동하지 않습니다. 그래서 xeyesand는 xclock작동할 수 있지만 Ubuntu를 새로 설치 chromium-browser하거나 firefoxUbuntu에서는 작동하지 않습니다.

해결책은 간단합니다: export XAUTHORITY=$HOME/.Xauthority원격 X11 애플리케이션을 실행하기 전에.

답변2

불안정옵션:

로그인된 호스트에서 실행

xhost +

아니면 좀 더 안전해지세요.

xhost <IP you want to log in to>

그러면 원격 호스트로부터의 연결이 허용됩니다.

이것이 왜 안전하지 않습니까? 해당 호스트의 모든 프로그램 및 사용자(또는 가 있는 호스트의 모든 프로그램/사용자 xhost +)는 화면에 액세스하고 컴퓨터에서 수행하는 모든 키 입력을 읽을 수 있습니다 xhost.

더 안전한옵션:

원격 컴퓨터에 X11 서버의 인증 키를 추가합니다:

로컬 컴퓨터에서 필요한 "마법 쿠키"를 나열하십시오.

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

원격 시스템에서 ~/.Xauthority파일에 비밀을 추가하세요. 가장 쉬운 방법은 다음과 같습니다 xauth.

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

이러한 시스템 간의 X11 프로토콜 데이터는 암호화되지 않은 상태로 유지되므로 취약합니다.

답변3

user1이 원래 사용자(비밀번호를 알고 있음)이고 user2가 대상 사용자(알 수 없는 비밀번호)라고 가정하면 작동하도록 할 수 있습니다.

% 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 &

또한 게시물에 올바른 sshd 구성이 명시되어 있다고 가정합니다.

관련 정보