X11 포워딩이 활성화 된 상태에서 ssh’ing 후 X 프로그램을 열 때 “디스플레이를 열 수 없습니다”오류를 어떻게 해결합니까? 한 후 ssh -YUbuntu

내 Mac (OS X 10.6.8)에서 X11 앱 (XQuartz 2.3.6, xorg-server 1.4.2-apple56)을 xhost +시작한 후 X11에서 터미널을 열고 실행 한 후 ssh -YUbuntu 10.04 VM (VMware에서 실행)으로 이동합니다. 퓨전). 내가 실행하면 gedit .bashrc(예를 들어), 내가 얻을 :

(gedit:9510): Gtk-WARNING **: cannot open display:

set | grep DISPLAY 아무것도 반환하지 않습니다.

그러나 ssh -Y우분투 11.04 컴퓨터에 들어가면 gedit .bashrc작동합니다. echo $DISPLAY“localhost : 10.0″을 반환합니다.

export DISPLAY=localhost:10.0내 VM에 ssh하고 실행 한 후에 시도했지만 다음을 gedit .bashrc얻습니다.

(gedit:9625): Gtk-WARNING **: cannot open display: localhost:10.0

두 가지 우분투 시스템의 구성에서 하나가 작동하는 이유와 다른 이유가 무엇인지 설명하는 차이점은 무엇입니까?

업데이트 : 아래 의견에서 Zoredache 가 제안한 대로을 실행 sudo apt-get install xbase-clients했지만 동일한 문제가 계속 발생합니다.



답변

서버의 sshd_config (일반적으로 /etc/ssh/sshd_config)를 확인하고 X11Forwarding 옵션이 라인에서 사용 가능한지 확인하십시오.

X11Forwarding yes

X11Forwarding이 지정되지 않은 경우, 확인 가능한 데비안 머신에서 기본값은 no입니다.


답변

에서 xhost를 + : 수정하는 방법 “을 열 수 없습니다 표시”오류 원격 서버에 GUI를 시작하는 동안 :

답변 :이 기사에서 언급 한 xhost 절차에 따라“디스플레이를 열 수 없습니다”오류를 해결할 수 있습니다.

xhost +를 사용하여 클라이언트가 모든 호스트에서 연결되도록 허용

다음 명령을 실행하여 클라이언트가 모든 호스트에서 연결하도록 허용하는 액세스 제어를 비활성화하십시오.

$ xhost +

액세스 제어 비활성화, 클라이언트는 모든 호스트에서 연결할 수 있습니다

X11 전달 활성화

ssh를 수행하는 동안 -X 옵션을 사용하여 X11 전달을 활성화하십시오.

$ ssh username@hostname -X

-Y 옵션을 사용하여 신뢰할 수있는 X11 전달을 사용으로 설정하십시오.

$ ssh username@hostname -Y

해당 호스트에서 열린 GUI 응용 프로그램

위에서 설명한대로 원격 호스트에 대한 ssh 연결을 연 후에는 아무 문제없이 열 수있는 GUI 응용 프로그램을 열 수 있습니다.

여전히 “표시를 열 수 없습니다”오류가 발생하면 아래와 같이 DISPLAY 변수를 설정하십시오.

$ export DISPLAY='IP:0.0'

참고 : IP는 GUI 응용 프로그램을 표시하려는 로컬 워크 스테이션의 IP입니다.


답변

Mac OS X에서 Ubuntu VM에 로그인 할 때이 문제가 발생했습니다. 어떤 이유로 디스플레이 변수에서 ‘localhost’를 좋아하지 않는 것 같습니다. harrymc가 제안한대로 IP를 수동으로 설정하십시오.

export DISPLAY="127.0.0.1:10.0"

그렇다면 X11 프로그램은 괜찮을 것입니다. localhost와 127.0.0.1이 동등하다는 것을 OS에 알려 주어야 할 필요는 없지만 적어도 작동합니다.


답변

CentOS KVM 서버에서이 문제가 발생하여 “xauth”프로그램이 누락되었습니다.


답변

arg로 실행할 때 일정 시간지난 후에이 문제가 발생하는 경우 -X또는 ForwardX11/ etc / ssh / ssh_config에서 실행 한 다음 신뢰할$ ssh username@hostname -Y있는 X11 전달 을 활성화 하려면 정확한 원인을 알지 못하지만 -X시간이 지나면 일부 기능이 만료되어 보안을 향상시킬 수 있습니다.

온라인에서 찾은 내용은 다음과 같습니다.

ssh -X remotemachine을 사용하는 경우 원격 시스템은 신뢰할 수없는 클라이언트로 처리됩니다. 따라서 로컬 클라이언트는 원격 시스템에 명령을 보내고 그래픽 출력을 수신합니다. 명령이 일부 보안 설정을 위반하면 대신 오류가 발생합니다.

그러나 ssh -Y remotemachine을 사용하면 원격 시스템이 신뢰할 수있는 클라이언트로 처리됩니다. 이 마지막 옵션은 보안 문제를 일으킬 수 있습니다. 다른 그래픽 (X11) 클라이언트가 원격 시스템에서 데이터를 스니핑 할 수 있기 때문에 (스크린 샷 생성, 키 로깅 및 기타 불쾌한 작업 수행) 이러한 데이터를 변경할 수도 있습니다.

이러한 것들에 대해 더 알고 싶다면 Xsecurity 맨 페이지 또는 X 보안 확장 사양을 읽는 것이 좋습니다. 또한 / etc / ssh / ssh_config에서 ForwardX11 및 ForwardX11Trusted 옵션을 확인할 수 있습니다.

출처 :


답변

내 Mac에서 방금 테스트 한 결과 다른 시스템이 정상일 수 있습니다 .

  1. xhost +를 사용하여 클라이언트가 모든 호스트에서 연결되도록 허용

    $ xhost +

  2. X11 디스플레이를 지원하는 환경이 있어야합니다

    [Mac 시스템] Mac 용 X11 설치 https://www.xquartz.org/

  3. ssh-server가 x11 디스플레이를 전달하도록해야합니다.

    업데이트 /etc/ssh/sshd_config및 설정 X11Forwarding yes후 ssh 서버를 다시 시작하십시오.

  4. ssh 세션이 x11 디스플레이를 -X매개 변수

    와 함께 표시하도록해야합니다.

    $ ssh -X user @ ip

  5. PyCharm에서 X11 앱을 여는 방법은 무엇입니까?
    • X11 디스플레이를 지원하는 ssh 세션을 엽니 다 (이 세션을 유지해야 함).
    • echo $DISPLAY그 ssh 세션에서 실행
    • DISPLAYPyCharm에 대한 환경 변수 설정

답변

UXTERM 또는 XTERM을 실행할 때 문제가 발생합니다

export $DISPLAY

변수가있을 것입니다. 그런 다음 설정하고 내보내십시오.