ssh 로그인을 통해 x11 디스플레이가 작동하지 않는 이유는 무엇입니까?


22

원격 서버에 로그인하여 x 응용 프로그램 (예 : firefox)을 표시하려고합니다. 그러나 오류 메시지가 나타납니다. 다음은 파이어 폭스를 열려는 시도입니다.

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ exit
logout
Connection to 143.248.146.204 closed.

Black@Black-PC ~
$ ssh -Y kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ 

이 두 옵션이 X11과 관련된 자격 증명과 관련되어 있고 스위치가 나를 대신 할 것이라는 점을 읽었 기 때문에 -X, -Y를 사용했습니다. -X, -Y 스위치가 없어도 시도가 실패했습니다.

'표시되지 않음'오류는 무엇을 의미합니까?

추신 이상한 점은 PUTTY를 통해 원격 서버에 연결하고 'firefox'명령을 반복하면 작동합니까?!?! (firefox는 로컬 컴퓨터에 표시됨)

추신 : 로컬 컴퓨터가 Windows 7이므로 X11을 표시하기 위해 Xming을 백그라운드에서 실행하고 있습니다. 상단에 쓰여진 시도는 Cygwin 터미널에 명령이 입력되었습니다.


Cygwin 터미널에서 로컬로 무언가를 표시하려고 했습니까? 예를 들어, xclock과 같은 로컬 X 유틸리티를 찾아서 실행하여 결과를 확인할 수 있습니다. 로컬로 표시 할 수 없으면 원격 디스플레이가 작동하지 않습니다. Cygwin 용 X 서버가 필요할 수도 있습니다.
unxnut

1
@unxnut 당신이 지적했듯이, 내 DISPLAY변수는 설정되지 않았습니다. export DISPLAY=:0.0' and executed xclock으로 설정 하면 xclock이 나타납니다. 그러나 ssh를 통해 원격 서버에 로그인하고 xclock다시 시도 하면Error: Can't open display:
kwagjj

답변:


16

cygwin 환경에 DISPLAY- 변수가 설정되어 있는지 확인하십시오.

export DISPLAY=:0.0

SSH로 연결 한 후 해당 쉘이 다음을 사용하여 올바른 DISPLAY 변수를 알고 있는지 확인하십시오.

echo $DISPLAY

4
로컬 컴퓨터의 cygwin 터미널에 DISPLAY 변수를 설정 한 후 원격 서버에 ssh 's을 입력했습니다 echo $DISPLAY. 그러나 여전히 원격 서버의 DISPLAY 변수는 아무것도 설정되어 있지 않습니다.
kwagjj

2
Error: Can't open display: :0.0
Ahmed

2
export DISPLAY=localhost:0
이렇게

18

방금 헤드리스 RHEL7 서버에 연결하는 데이 문제가 발생했습니다.

DISPLAY 변수를 설정하고 올바르게 권한을 부여하려면 호스트에 xorg-x11-xauth 패키지가 설치되어 있어야합니다.

누군가 시간을 절약했으면 좋겠다.


3
정확히 내가 찾던 것. 매우 감사!
josh-cain

1
좋은 답변입니다! 다른 솔루션 (내보내기를 통해 DISPLAY를 수동으로 설정)은 클라이언트와 서버간에 암호화되지 않은 전송을 초래합니다! 데비안 스퀴즈에서는 모든 것을 작동시키기 위해 설치해야 할 패키지 "xauth"였습니다. 당 재 로그인 후 ssh -Xecho $DISPLAYURL을 + 포트와의 전화 반환 xterm &로컬 윈도우에서 열 터미널을.
Jpsy

7

나를 도와 주신 @unxnut @jensd에게 감사드립니다. 귀하의 의견을 바탕으로 문제를 파악할 수있었습니다.

이 솔루션에는 두 단계가 필요했습니다.

  1. DISPLAY 변수가 올바르게 설정되어 있어야합니다.
  2. 원격 서버에 ssh 할 때 -X 스위치가 켜져 있어야합니다.

이전의 시도에는이 두 가지 조건 중 하나 또는 둘 다가 부족합니다.

어쨌든, 이것을 여기에서 보는 나중의 사용자에게는 내가 말하려는 것을 보여주는 예가 있습니다.

case1

내 로컬 컴퓨터에는 DISPLAY 변수 세트가 없습니다. 그런 다음 -X 스위치를 사용하여 원격 서버에 ssh 한 다음 실행을 시도 xclock합니다.

Black@Black-PC ~
$ echo $DISPLAY

## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.

보시 Error: Can't open display:다시피 원격 서버 터미널에 오류 가 표시됩니다.

case2

이번에는 로컬 머신에서 DISPLAY 변수를 지정하겠습니다. 그러나 ssh'ing 할 때 -X 스위치를 켜지 않습니다. 결과는 실패합니다 :

Black@Black-PC ~
$ export DISPLAY=:0.0

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$ 

처음에는 DISPLAY 변수를 올바르게 설정했음을 알 수 있습니다. 그러나 그럼에도 불구하고 ssh'ing (-X 스위치없이) 후에는 xclock이 실행되지 않습니다.

* 다른 결과는 setenv | grep DISPLAY여기에서 볼 수 있습니다 (case1과 비교). case2의 경우 결과는 비어 있습니다. 반면 에이 명령 줄에 대한 case1의 결과는 DISPLAY: undefined variable....이 차이가 어떻게 발생하는지 잘 모르겠지만 조건 1 또는 2를 만족했는지 여부와 관련된 직감을 얻습니다. .

case3

이번에는 로컬 컴퓨터에서 DISPLAY 변수를 올바르게 지정하고 -X 스위치를 켠 상태에서 원격 서버에 ssh를 지정합니다.

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from 
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$

이 설정으로 xclock작동합니다! 내가 거짓말을하고 있지 않다는 것을 증명하는 스크린 샷이 있습니다. 여기에 이미지 설명을 입력하십시오 xclock이 로컬 컴퓨터에 성공적으로 표시됩니다.

setenv | grep DISPLAY이 경우 에도 결과를 확인하십시오 . 이제 표시 DISPLAY=localhost:11.0됩니다. 내가 아는 것으로부터, 이것은 .Xauthority 파일의 MIT-MAGIC-COOKIE와 관련이 있지만 이것에 대해 많이 알지 못하므로 더 이상 가지 않을 것입니다.

결론 : 위의 세 가지 경우에서 원격 X Windows가 올바르게 표시되기 위해서는 로컬 시스템의 1. DISPLAY 변수와 2. ssh -X스위치가 올바르게 설정되어 있는지 확인할 수 있습니다. 물론, 원격 서버는 X11 전달을 허용해야합니다.

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