잘못된 인증으로 인해 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으로 설치된 모든 것은 작동하지 않습니다. 따라서 작동할 수도 xeyes있지만 xclockUbuntu를 새로 설치하거나 chromium-browserUbuntu firefox에 설치하면 작동하지 않습니다.

해결 방법은 다음을 수행하는 것입니다. 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 구성을 가정합니다.

관련 정보