CentOS 6.7에서는 ssh
로컬 워크스테이션에서 원격 호스트로 이동하여 호스트 이름이나 IP 주소를 사용하여 DISPLAY 환경 변수를 워크스테이션으로 설정하면 X 디스플레이를 열 수 없습니다.
예:
$ ssh -Y host1
$ export DISPLAY=ws1:0.0 # workstation hostname=ws1
$ xeyes
Can't not open display
그러나 다음은 작동합니다.
$ ssh -Y host1
$ echo $DISPLAY
localhost:10.0
$ xeyes # works as expected
호스트 이름으로 $DISPLAY를 설정할 때 X-display가 작동하지 않는 이유는 무엇입니까?
답변1
심각한 보안 문제로 인해 X 서버에 대한 원격 액세스는 이제 일반적으로 금지됩니다.
방화벽 및/또는 X 서버 설정으로 인해 이러한 연결이 성공하지 못할 수 있습니다.
그러면 로컬 및 Unix 도메인 소켓 연결만 허용되므로로컬 호스트:서버[.display]아니면 전혀 호스트가 없습니다:서버[.display]사용 가능한 설정이 있습니다.
X 서버가 TCP 포트에서 수신 대기하는지 확인하려면 다음 명령을 실행하고 X 서버(터널링의 경우 SSH)가 6000+ 범위의 포트를 사용하고 있는지 확인할 수 있습니다.
$ sudo netstat -anp|grep -w LISTEN
서버가 Unix 바인딩 소켓만 수신하는 경우 다음을 사용하여 표시됩니다 lsof
.
$ sudo lsof -p $(pgrep Xorg)
다음 줄은 Unix 소켓을 나타냅니다.
Xorg 1874 root 21u unix 0xffff8800d5db4000 0t0 21169 @/tmp/.X11-unix/X0 type=STREAM
TCP 포트에서 수신 대기하는 모든 프로세스를 식별하려면 다음 명령을 실행할 수 있습니다.
$ sudo lsof -P | grep -w LISTEN
예를 들어, 다음은 TCP 포트 22에서 수신 대기하는 SSH 데몬입니다.
sshd 1032 루트 4u IPv6 22727 0t0 TCP *:22(듣기)
답변2
로컬 X 서버가 X 서버의 최신 버전인 경우 Xorg
기본적으로 직접 네트워크 연결을 허용하지 않습니다. 이 기능을 활성화하려면오래되고 전혀 안전하지 않음메서드에 액세스하려면 이 -listen tcp
옵션을 포함하도록 X 서버를 시작하는 데 사용되는 명령줄을 수정해야 합니다.
이전 배포판은 기본적으로 이 옵션을 사용하여 X 서버를 시작하며 -nolisten tcp
, 보호되지 않은 레거시 네트워크 액세스를 활성화하려면 X 서버 명령줄에서 이 옵션을 제거해야 합니다.
대부분의 주요 Linux 배포판은 2000년 이전에 기본적으로 보호되지 않은 X11 연결을 차단하기 시작한 것 같습니다.