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


111

내 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했지만 동일한 문제가 계속 발생합니다.


2
Ubuntu 10.04 상자에 X11에 적합한 도구가 설치되어 있습니까? xbase-clients가 설치되어 있지 않으면 설치하십시오.
Zoredache

설치했지만 여전히 같은 문제가 있습니다. (위 참조)
Daryl Spitzer

3
연결할 때 -vv 옵션을 ssh에 전달하면 자세한 디버그 메시지가 표시됩니다. 연결하는 동안 X11 전달에 대한 몇 가지 의견이 표시됩니다.
Zoredache

1
@jcrawfordor 당신은 X11Forwarding우분투 하나를 확인했고 , xbase-clients설치했고 ssh 연결을 만들고있는 터미널의 Mac에서 Xapps를 시작할 수 있습니다. (즉,이 검사 $DISPLAY는 ssh를 실행하는 터미널에 설정 에서를 .
만웨

1
제 경우에는 MacOS의 XQuartz 버전을 업그레이드하는 것입니다
Waruna Ranasinghe

답변:


47

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

X11Forwarding yes

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


4
다른 Ubuntu VM을 설정 한 후 xbase-clients를 설치하고 X11Forwarding을 활성화해야한다는 것을 알았습니다. 둘 다 포함하도록 답변을 업데이트하면 수락하겠습니다.
Daryl Spitzer

1
흥미 롭군 오늘 아침에 새로 설치 한 10.04의 새 설치에서 X11Forwarding이 기본적으로 활성화되었습니다. 우분투 사람들은 기본값으로 다시 혼란스러워해야합니다.
Zoredache

28
@DerfK, 내 시스템 "X11Forwarding yes"에서 여전히 오류가 발생했습니다. (gedit : 8381) : Gtk-WARNING ** : 디스플레이를 열 수 없습니다 : 이러한 경우
AJ

1
데비안에서는 xauth 패키지를 설치 한 후 다시 로그인해야합니다.
comte

$ ssh username @ hostname -Y 이것은 나를 위해 일했다
MarcoZen

60

에서 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입니다.


11
참고로 +1 IP =는 GUI를 얻으려는 로컬 워크 스테이션의 IP입니다.
PCoder

3
OS X에서 비슷한 문제가있는 경우 XQuartz가 설치되어 있는지 확인하십시오. 그렇지 않으면 이러한 수정 사항 중 어느 것도 도움이되지 않습니다. (OP의 질문은 그가 XQuartz를 가지고 있음을 보여 주므로 이것은 나처럼 비슷한 문제가있는 사람들에게 더 많은 참고 사항입니다)
Dolan Antenucci

3
달리기 xhost +는 매우 안전하지 않으므로 사용해서는 안됩니다! Stefan Rogin이 언급했듯이 공격자는 호스트에서 XSession에 연결하거나 입력 한 모든 내용을 읽거나 표시되는 화면을 변경할 수 있습니다.
jirislav

마지막 하나 export Display=IP:0.0는 나를 위해 그것을했다
javadba

18

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

export DISPLAY="127.0.0.1:10.0"

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


이것은 나를 위해 일했습니다. 왜 localhost가 작동하지 않는지 아십니까?
Alex

2
빙고! 나는 한동안 그 문제에 갇혀있다. 나는 SSH로 연결했고 Gtk 프로그램을 시작할 수 없었다 (그러나 "xeyes"와 같은 평범한 X11은 작동했다). 표시가 정확하다. 실제로 "localhost"의 해상도는 그렇지 않았습니다! DISPLAY = 127.0.0.1 : 10.0 또는 DISPLAY = :: 1 : 10.0을 수동으로 설정하면 작동합니다. / etc / hosts를 편집해도 효과가없는 것 같습니다. DNS가 올바르게 구성되었습니다 ( "dig localhost"관련 정보는 127.0.0.1 및 :: 1을 모두보고합니다). 따라서 Gtk에서 X11 연결에 대한 DNS 확인 (gtk? gdk? glib? 기타?)에 버그가있는 것 같습니다.
Pablo Saratxaga

1
Beagle Bone Black 용 데비안 설치에서 / etc / host는 루트 이외의 사람이 읽을 수 있도록 설정되지 않았습니다. 이로 인해 증상이보고되었습니다. / etc / hosts를 모두 읽을 수있게 만들었고 정상적으로 작동했습니다.
Daniel

13

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


1
이것은 최소한의 데비안 설치에 도움이되었습니다. 대단히 감사합니다!
binOr

9

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 옵션을 확인할 수 있습니다.

출처 :


6

내 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에 대한 환경 변수 설정

1
이것이 다른 이유 또는 다른 대답보다 선호되어야하는 이유는 무엇입니까? 간단한 편집 만으로 설명해주세요 . 넌 할 수있어!!
Pimp Juice IT

@ McDonald 's Thanks. 자세한 내용으로 업데이트되었습니다.
색상

4

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

export $DISPLAY 

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


4

나는 /etc/ssh/sshd_config다음 을 넣어야했다 .

X11UseLocalhost no

대신 "yes"로 설정하십시오. 기본값이 "아니오"이면 이상합니다. Windows에서 XMing으로 퍼티를 사용하는 사용자. Fedora보다 ssh를 사용합니다. 때때로 그것은 우리에게 줄 것입니다

error can't open display localhost

서버를 재부팅하면 대개 문제가 해결되지만 어리 석습니다. 위의 sshd작업을 수행하고 서버 에서 서비스 를 다시 시작한 후 새 연결이 다시 작동합니다.


2

나는 또한 Solaris 10 에서이 문제가 있었고 리스너가 설정되지 않았다는 것을 알았습니다.

svccfg –s /application/x11/x11-server listprop options/tcp_listen
svccfg –s /application/x11/x11-server setprop  options/tcp_listen = true

1

CentOS 6.5에서 / etc / hosts를 망친 후 갑자기 원격 X 프로그램 액세스가 손실되었습니다. 빈 $ DISPLAY 변수와 동일한 증상 (수동으로 설정 / 내보내기에 도움이되지 않음).

실제 호스트 이름을 가리키는 127.0.0.1 항목이 필요합니다. 사실 순서는 관련성이있는 것 같습니다 (마지막으로 넣으면 작동하지 않습니다 ...)

[root@poseidon /etc]$ cat hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1     localhost6.localdomain6 localhost6
127.0.0.1 poseidon.mycampus.edu poseidon
1XX.XXX.XXX.208 poseidon.mycampus.edu poseidon

이 문제를 해결 한 후 xeyes, xclock 및 기타 X 테스트 장난감이 다시 작동하므로 필요한 virt-manager도 다시 온라인 상태입니다.


1

방금 x 설정을 방해하는 설정에서 멋진 딸꾹질을 발견했습니다. 방화벽이 localhost의 모든 연결을 차단하여 터널에 도달하지 못했습니다.


1

Konsole을 사용하는 경우 Xfce Terminal과 같은 다른 터미널 에뮬레이터로 전환하고 root를 사용하여 다시 시도하십시오.


1

터미널 열기 $ ssh username @ hostname -X

$ ssh username@hostname -Y

$ export DISPLAY='IP:0.0'

export DISPLAY = "127.0.0.1:10.0"모두 작동합니다.


감사. 작동 DISPLAY='localhost:10.0'하지 않을 때 특별한 경우에 작동합니다.
xpt

1

이 설정은 저에게 효과적입니다.

로컬 (Windows 10의 64 비트 Cygwin) DISPLAY=:0

서버 (Amazon EC2 RHEL 7.6) DISPLAY=:10.0

이 설정은 작업 표시 줄에서 "X 응용 프로그램 메뉴 : 0"을 클릭하고 시스템 도구> 터미널을 선택하면 찾을 수 있습니다.


0

많은 좌절 후 그의 / etc / host 파일에서 서버의 호스트 이름에 대한 항목이 잘못되었음을 알았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.