공든탑앱 열기

원격 X: DISPLAY·xhost·xauth

리눅스마스터 2급 · X 윈도 · 약 9분

쉽게 말하면

그래픽 프로그램이 '어느 컴퓨터의 어느 화면에 그릴지' 적은 값이 DISPLAY예요. 다른 컴퓨터가 내 화면에 그리려면 내 쪽에서 허락해 줘야 해서, 허락 명단(xhost)이나 비밀 열쇠(xauth)를 써요.

시험용 정의

X 클라이언트는 환경 변수 DISPLAY를 보고 어느 X 서버에 화면을 그릴지 정한다. 원격 X 서버에 그리려면 그 서버가 접속을 허용해야 하는데, 이를 xhost(호스트 단위) 또는 xauth(쿠키 인증)로 관리한다.

비유로 이해하기

DISPLAY는 택배 받을 주소, xhost는 "이 집에서 온 택배는 받아 줘"라고 경비실에 적어 둔 명단, xauth는 택배 기사가 가져와야 하는 비밀 코드다.

자세히

DISPLAY 형식

값뜻
:0이 컴퓨터(로컬)의 첫 번째 X 서버 (가장 흔함)
:1로컬에서 실행한 두 번째 X 서버
localhost:10.0ssh -X 포워딩이 만든 가상 디스플레이의 흔한 형태
192.168.0.25:0.0192.168.0.25의 X 서버 0번, 스크린 0번

원격 X 실행 순서 (xhost 방식)

  • 화면 쪽(X 서버, 192.168.0.25)에서 허용: xhost +192.168.0.10
  • 프로그램 쪽(192.168.0.10)에서 주소 지정: export DISPLAY=192.168.0.25:0
  • 프로그램 실행: xclock &

한 번에 지정하려면 xclock -display 192.168.0.25:0도 된다.

xhost 사용법

명령뜻
xhost현재 접근 허용 목록 보기
xhost +호스트해당 호스트 허용
xhost -호스트해당 호스트 허용 취소
xhost +모든 호스트 허용 (보안상 위험)
xhost -목록에 있는 호스트만 허용 (접근 제어 켜기)

더 안전한 방법

xauth는 ~/.Xauthority(X 인증 키를 저장하는 파일)에 저장된 MIT-MAGIC-COOKIE를 가진 클라이언트만 허용한다. xauth list $DISPLAY로 현재 디스플레이의 키를 보고, 다른 컴퓨터에서 xauth add $DISPLAY . 키값으로 그 키를 등록한다. 요즘은 ssh -X(또는 -Y)로 X11 포워딩을 쓰는 게 일반적이다. 암호화된 SSH 터널로 화면을 보내고 DISPLAY와 인증도 자동으로 설정된다.

시험에 이렇게 나와요

확인 문제

Q1. export DISPLAY=192.168.0.25:0.0에서 가운데 :0은 무엇을 뜻할까?

  1. 사용자 번호 0(root)
  2. 디스플레이(X 서버) 번호 0
  3. 모니터 해상도 등급
  4. 포트 번호 0
정답 보기

2번 디스플레이(X 서버) 번호 0

DISPLAY 형식은 호스트:디스플레이번호.스크린번호다. :0은 그 컴퓨터의 첫 번째 X 서버, .0은 그 서버의 첫 번째 스크린이다. X 서버가 쓰는 TCP 포트는 6000 + 디스플레이 번호라 :0이면 6000번.

Q2. DISPLAY=:1의 의미로 알맞은 것은?

  1. 원격 컴퓨터의 첫 X 서버
  2. 로컬의 두 번째 X 서버
  3. X 서버를 끄라는 뜻
  4. 첫 번째 모니터의 두 번째 스크린
정답 보기

2번 로컬의 두 번째 X 서버

번호는 0부터. :1은 두 번째.

Q3. X 윈도 인증 키(MIT-MAGIC-COOKIE)가 저장되는 사용자 파일은?

  1. ~/.xinitrc
  2. ~/.Xauthority
  3. /etc/X11/xorg.conf
  4. ~/.Xdefaults
정답 보기

2번 ~/.Xauthority

~/.Xauthority다. X 서버에 접속할 수 있는 인증 키를 담는다. ~/.xinitrc는 startx 설정, xorg.conf는 X 서버 설정 파일이다.

Q4. A 컴퓨터의 프로그램을 B 컴퓨터 화면에 띄우려 한다. DISPLAY 변수를 설정하는 곳은?

  1. B(X 서버)에서
  2. 둘 다 설정하지 않음
  3. A(X 클라이언트)에서
  4. 라우터에서
정답 보기

3번 A(X 클라이언트)에서

프로그램이 도는 A가 어디에 그릴지 DISPLAY로 정한다. B에서는 xhost로 허용.

Q5. X 클라이언트가 화면을 출력할 X 서버를 지정하는 환경 변수는?

  1. XSERVER
  2. XAUTH
  3. TERM
  4. DISPLAY
정답 보기

4번 DISPLAY

DISPLAY다. 예를 들어 DISPLAY=:0이면 이 컴퓨터의 첫 번째 화면에 띄운다.

Q6. 모든 호스트에서 내 X 서버로의 접속을 허용하는 명령은?

  1. xhost +
  2. xhost -
  3. xhost all
  4. xauth +
정답 보기

1번 xhost +

xhost + (위험하므로 실습에서만).

Q7. ssh 접속 시 X11 포워딩을 켜는 옵션은?

  1. -X
  2. -L
  3. -x
  4. -D
정답 보기

1번 -X

-X로 켠다. 소문자 -x는 오히려 끈다.

헷갈리기 쉬운 O·X

xhost 명령은 X 클라이언트(프로그램이 실행되는 쪽)에서 실행해 권한을 준다.

정답 보기

X 접속을 받는 X 서버(화면 쪽)에서 실행한다.

DISPLAY=:0 은 로컬 컴퓨터의 첫 번째 X 서버를 뜻한다.

정답 보기

O 호스트를 생략하면 로컬.

xauth 방식은 ~/.Xauthority의 쿠키로 인증한다.

정답 보기

O MIT-MAGIC-COOKIE-1.

함께 보면 좋은 개념