SSH X11 전달(`ssh -X`)을 사용하여 X 응용 프로그램을 실행하려고 하면 "디스플레이를 열 수 없습니다"

SSH X11 전달(`ssh -X`)을 사용하여 X 응용 프로그램을 실행하려고 하면 "디스플레이를 열 수 없습니다"

다음을 사용하여 서버에 로그인할 수 있습니다.

ssh -X Hostip

그러나 명령을 실행하면 xclock다음과 같은 오류가 발생합니다.

Error: Can't open display: localhost:11.0

다음을 사용하여 표시 값을 확인했습니다.

echo $DISPLAY

결과 :

localhost:11.0

그리고 sshd_config 파일에서 X11 전달을 YES로 설정합니다.

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

내가 여기서 놓친 것에 대한 제안이 있습니까?

답변1

사용 -Y. SSH의 매뉴얼 페이지에서:

-Y는 신뢰할 수 있는 X11 전달을 활성화합니다. 신뢰할 수 있는 X11 전달에는 X11 SECURITY 확장 제어가 적용되지 않습니다.

여전히 문제가 있다면 시도해 볼 수 있습니다.$DISPLAY로컬 박스의 IP로 설정:

$ export DISPLAY='<ip_address>:11.0'

으로 설정하다

$ export DISPLAY='127.0.0.1:11.0'

사람들은 이 문제에 자주 부딪히는 것 같습니다.Mac OS X의 SSH. 설정하고 싶을 수도 있습니다.

X11UseLocalhost no

이 경우에도 마찬가지이다.

답변2

이것은 나에게 효과적입니다.

변화

X11UseLocalhost yes

도착하다

X11UseLocalhost no

답변3

~에 귀속됨https://unix.stackexchange.com/a/12772/61349진단 메모를 받으세요.

SSH 클라이언트가 X11 전달을 요청하는지 확인하세요.-V배너

ssh example.com -X -v

특정 메시지를 찾으려면 다음 단계를 따르세요.

debug1: Requesting X11 forwarding with authentication spoofing.

문제의 또 다른 명백한 징후는 DISPLAY환경 변수가 설정되어 있지 않다는 것입니다. 비어 있거나 설정되지 않은 경우 뭔가 잘못된 것입니다. 적어도 따르면위에 언급된 동일한 기사을 사용하면 이러한 변수가 자동으로 설정됩니다.


SSH Control Master를 사용하고 SSH 연결은 다음과 같습니다.

Host <hostname>
    ControlMaster auto
    ControlPath ~/.ssh/control/%r@%h:%p
    ControlPersist 10m

이전 SSH 연결에서는 X11Firwarding을 요청하지 않았으므로 ssh향후 호출에 대한 옵션이 사용되지 않았습니다. 그래서 나에게는

SSH -X는 완전히 무시됩니다

"X11 전달 요청"이 표시되지 않지만 세션을 재사용하는 muxer가 표시되는 경우;

debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 10

그런 다음 해당 연결에 대해 현재 ControlMaster를 종료하고 -X/-Y 플래그를 사용하여 다시 연결해야 합니다.

ControlMaster를 중지하세요

ssh -O check <hostname>

Master running (pid=2758)

(이렇게 하면 ControlMaster를 사용하는 모든 활성 연결이 종료됩니다)

ssh -O exit <hostname>

Exit request sent.

답변4

내 경우 에는 macOS에서 XQuartz로 전달하려고 할 때 XQuartz 터미널(도크에서 XQuartz 아이콘을 마우스 오른쪽 버튼으로 클릭하고 애플리케이션 > 터미널을 클릭하여 열림)에서 명령을 실행하여 ssh문제를 해결했습니다 .ssh -Y

관련 정보