SSH 및 su를 통한 X11 전달

SSH 및 su를 통한 X11 전달

이상한 점은 X11 포워딩과 함께 ssh를 사용하여 연결할 때 사용자와 루트는 볼 수 있지만 xclock다른 사용자는 볼 수 없다는 것입니다. 왜?

mahmood@cluster:~$ xclock
^C
mahmood@cluster:~$ su
Password:
root@cluster:mahmood# xclock
^C
root@cluster:mahmood# su - hmousavi
hmousavi@cluster:~$ xclock
MobaXterm X11 proxy: Authorisation not recognised
Error: Can't open display: localhost:10.0
hmousavi@cluster:~$

PS: 창을 ^C볼 수 있다는 뜻 이므로 터미널로 돌아가는 키를 xclock누릅니다 .^C

답변1

X11 디스플레이에 연결하려면 디스플레이 이름(일반적으로 DISPLAY환경 변수에 전달됨)과 두 가지 정보가 필요합니다.쿠키, 이는 모든 애플리케이션이 연결 시 표시해야 하는 모니터 비밀번호입니다. 일반적으로 쿠키는 에 저장되지만 환경 변수에 따라 다른 파일 ~/.Xauthority에 저장될 수도 있습니다 .XAUTHORITY

DISPLAYSSH에서 설정한 값은 호출 간에도 유지되는 것 같습니다 su. 그러나 쿠키는 거기에 있습니다 ~mahmood/.Xauthority. 프로그램을 hmousavi로 실행하면 프로그램은 그곳에서 쿠키를 찾아 ~hmousavi/.Xauthority다른 값을 찾습니다.

원칙적으로는 실행할 수 있지만 XAUTHORITY=~mahmood/.Xauthority xclockhmousavi에는 파일을 읽을 수 있는 권한이 없을 수 있습니다. .Xauthority다른 사용자는 파일을 읽을 수 없어야 합니다. 이 xauth명령을 두 번 사용할 수 있습니다. 한 번은 쿠키 값( xauth list localhost:10.0)을 추출하기 위해 mahmood로, 한 번은 값을 가져오기 위해 hmousavi로 사용할 수 있지만( xauth merge) 번거롭습니다. X11 애플리케이션을 작동시키는 가장 쉬운 방법은 전체적으로 SSH를 사용하는 것입니다. SSH는 자동으로 X11 전달을 설정하기 때문입니다.

mahmood@cluster:~$ ssh -X hmousavi@localhost
hmousavi@cluster:~$ xclock

.ssh/authorized_keys이 작업을 허용하려면 mahmood의 SSH 공개 키를 hmousavi에 추가하세요 .

관련 정보