-X 없이 머신에 ssh를 연결한 후 ssh -X처럼 작동하도록 $DISPLAY를 변경할 수 있습니까?

-X 없이 머신에 ssh를 연결한 후 ssh -X처럼 작동하도록 $DISPLAY를 변경할 수 있습니까?

ssh기계 없이도 -X일부 설정(예: $DISPLAY)을 변경하여 이와 같이 작동하도록 할 수 있습니까 ssh -X? 그렇지 않다면 왜 그렇습니까? 감사해요.

답변1

X11 전달이 활성화된 두 번째 연결을 생성한 다음 DISPLAY첫 번째 연결에서 두 번째 연결의 환경 변수를 사용할 수도 있습니다.

첫 번째 창에서:

$ ssh user@host
user@host$ ...

두 번째 창에서:

$ ssh -Y user@host 'echo $DISPLAY; while sleep 3600; do :; done'
localhost:10.0

첫 번째 창으로 돌아가기:

user@host$ export DISPLAY=localhost:10.0
user@host$ xterm

안타깝게도 ssh시작된 프로세스/세션이나 원격 시스템에서 실행 중인 사용자에게 X11(또는 기타) 전달은 포함되지 않습니다(예: 자격 증명을 확인하지 않는 Unix 소켓을 사용하거나 네임스페이스를 사용하여). 이러한 전달은 원격 컴퓨터의 누구나 연결할 수 있는 간단한 TCP 청취 소켓입니다. X11 전달의 모든 보안은 X11 인증에 의존합니다.

X11 수동 전달

맨페이지에는 다음이 sshd_config(5)언급되어 있습니다.

X11 전달을 비활성화해도 사용자는 항상 자신의 전달자를 설치할 수 있으므로 X11 트래픽 전달이 차단되지 않습니다.

이 작업을 수동으로 수행하는 방법은 다음과 같습니다.

먼저 x11 인증 메커니즘[1]을 우회하는 호스트 또는 사용자 기반 액세스 제어를 비활성화해야 합니다.

$ xhost $(xhost | sed -n /:/s/^/-/p)
access control enabled, only authorized clients can connect

DISPLAY=:0그런 다음 로컬 컴퓨터에 인증 정보를 표시합니다.

$ xauth list :0
ohzd/unix:0  MIT-MAGIC-COOKIE-1  a86982ddce0c1e1c1a8c5e8b2846e43b

X11 전달 없이 원격 시스템에 연결:

$ ssh user@hzy64
user@hzy64's password:
[motd snipped]

다음을 통해 명령줄을 열고 포트에서 디스플레이에 해당하는 Unix 소켓으로의 원격 전달을 ~C추가합니다 .6000+43:0

hzy64$~C
ssh> -R 6043:/tmp/.X11-unix/X0
Forwarding port.

환경 변수를 설정 $DISPLAY하고 로컬에서 원격 시스템으로 인증 정보를 추가합니다.

hzy64$ export DISPLAY=localhost:43
hzy64$ xauth add $DISPLAY . a86982ddce0c1e1c1a8c5e8b2846e43b
xauth:  file /home/user/.Xauthority does not exist

이제 갈 준비가 되었습니다:

hzy64$ xterm

[1] 그릇된 길로 갔기 때문에버그 수정, Debian에서는 사용자 기반 액세스 제어가 기본적으로 활성화되어 있습니다 /etc/X11/Xsession.d/35x11-common_xhost-local. 더 나쁜 것은 XWayland에서 기본적으로 사용할 수 있는 유일한 기능이라는 점입니다.닫을 수 없습니다. X11 프로토콜(예: xscope)을 프록시하는 모든 프로그램은 X11 서버에 취약점을 열려고 하지 않는 한 자체 x11 인증 쿠키 검사(ssh와 마찬가지로)를 수행해야 합니다.

관련 정보