
다음 명령을 실행했습니다.보안 CRTSSH 클라이언트:
$ DISPLAY=abc.xyz.com:0 ; export DISPLAY
$ /bin/xhost +abc.xyz.com
하지만 다음 오류가 출력됩니다.
/bin/xhost: unable to open display "abc.xyz.com"
# cat /etc/system-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)
# whoami
root
이 오류를 해결하는 방법은 무엇입니까?
답변1
두 개의 호스트가 있다고 가정해 보겠습니다.
- 호스트A에 당신이 사용하고 싶은 모니터가 있습니다
- HostB에 실행하려는 응용 프로그램이 있습니다
먼저, 호스트A에 로그인하고 실행하여 xhost +hostB
호스트B가 호스트A의 디스플레이에 액세스할 수 있도록 허용합니다. 그런 다음 HostB에 로그인하고 DISPLAY=hostA:0 ; export DISPLAY
여기에서 애플리케이션을 실행하고 시작합니다.
또한 참고: 이는 완전히 암호화되지 않은 레거시 X11 연결이며 최신 Linux 배포판에서는 기본적으로 비활성화되는 경우가 많습니다. 이러한 명령을 사용하려면 먼저 호스트 A에서 작업을 수행하여 X11 서버가 TCP 프로토콜(로컬 UNIX 소켓뿐만 아니라)을 통해 들어오는 연결을 수신하도록 구성해야 할 수도 있습니다.
(이것은 암호화되지 않은 X11 연결을 사용하기 위해 제거해야 하는 옵션을 X 서버 명령줄에 추가하여 오랫동안 수행되었습니다. 최신 Xorg X 서버는 이러한 옵션의 의미를 뒤집을 수 있습니다. 활성화하려면 -nolisten TCP
명시적인 옵션을 추가해야 할 수도 있습니다. -listen TCP
로컬이 아닌 암호화되지 않은 X11 연결).
Linux/Unix 시스템에서 DISPLAY=:0.0
UNIX 소켓을 사용하여 액세스할 수 있는 X11 디스플레이는 /tmp/.X11-unix/X0
최초의(그리고 일반적으로 유일한) 로컬 X11 서버입니다. Windows 시스템에서는 이 메커니즘이 존재하지 않습니다.
UNIX 소켓 메커니즘은 로컬 시스템 아키텍처에서 사용 가능한 경우에만 사용됩니다.그리고DISPLAY 변수의 호스트 이름 부분은 빈 문자열입니다. 호스트 이름이 나열되면 "localhost"라도 TCP 연결이 사용됩니다.
TCP 연결을 사용하는 경우 X11 서버는 TCP 포트(X+6000)를 DISPLAY=hostname:X.Y
수신합니다 .hostname
Windows 기반 X11 서버를 시작하는 경우 Reflection X와 같은 상용 서버일 수도 있고 Reflection X와 같은 무료 서버일 수도 있습니다.VcXrv또는 클래식샤오밍, 시작되자마자 기본적으로 TCP 포트 6000을 수신하기 시작합니다. 최신 버전은 localhost
기본적으로 보안상의 이유로만 수신할 수 있습니다. 일반적인 대안은 시스템이 소유한 모든 IP 주소를 수신하는 것입니다.
X11을 사용하는 현대적이고 안전한 방법은 SSH 기반 X11 전달입니다. X11 전달이 활성화된 SSH 클라이언트를 시작하면 사용 가능한 메커니즘을 사용하여 SSH 클라이언트 호스트의 로컬 X11 서버에 연결됩니다. SSH 연결에서 보안 하위 채널을 사용하여 연결하는 모든 호스트에 이 연결을 전달합니다.
그런 다음 sshd
원격 호스트의 데몬은 사용 가능한 TCP 포트(일반적으로 6010+ 범위)에서 수신 대기를 시작하고 하나를 설정하고 DISPLAY=localhost:X.0
(여기서 X = 선택한 포트 번호 - 6000) SSH 클라이언트와 작업하여 xauth
SSH인 경우 쿠키를 자동으로 설정합니다. 필요한 경우 클라이언트의 X11 서버가 이를 제공할 수 있습니다.
클라이언트 호스트에 있는 X11 서버의 경우 들어오는 X11 트래픽은 로컬 SSH 클라이언트 프로세스에서 나오므로 xhost
일반적으로 SSH 클라이언트 호스트에는 명령이 필요하지 않습니다.
결과:DISPLAY
수동으로 설정할 필요도 없고 xhost
명령도 필요하지 않습니다.로컬 X11 서버가 실행 중인지 확인하고, SSH 클라이언트에서 X11 전달을 활성화하고, SSH를 사용하여 원격 호스트에 연결하고, X11 GUI 프로그램을 시작하세요. 프로그램 창이 로컬 모니터에 나타납니다.그냥 작동합니다.
이는 X11 연결을 설정하는 고전적인 방법에 익숙한 사람들에게는 새로운 소식일 수 있습니다.
저는 15년 전, 방화벽이 기존의 암호화되지 않은 X11 연결을 허용하지 않기 때문에 Oracle을 설치하기 위해 가끔 서버실에 가야 했던 심술궂은 늙은 데이터베이스 관리자에게 이것을 보여주었습니다.
그는 나를 안아주었습니다.