내가 가장 먼저 하고 싶은 일은:
서버에 로그인하고 싶습니다 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
이 문제에 대한 몇 가지 기사를 찾았습니다.
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
and는 xclock
작동할 수 있지만 Ubuntu를 새로 설치 chromium-browser
하거나 firefox
Ubuntu에서는 작동하지 않습니다.
해결책은 간단합니다: 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 구성이 명시되어 있다고 가정합니다.