SSH 및 su를 통한 X11 전달

SSH 및 su를 통한 X11 전달

xclock나에게는 X11 전달과 함께 SSH 연결을 사용하는 동안 사용자와 루트는 볼 수 있지만 다른 사용자는 그것을 볼 수 없다는 것이 이상합니다 . 왜?

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:~$

추신: 창을 ^C볼 수 있어서 터미널로 돌아가기 위해 xclock눌렀다는 뜻입니다.^C

답변1

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

DISPLAYSSH에 의해 설정된 값은 에 대한 두 번의 호출에 의해 보존된 것으로 보입니다 su. 그러나 쿠키는 ~mahmood/.Xauthority; hmousavi로 프로그램을 실행하면 프로그램은 쿠키를 찾아 ~hmousavi/.Xauthority다른 값을 찾습니다.

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

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

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

관련 정보