원격 X: DISPLAY·xhost·xauth
쉽게 말하면
그래픽 프로그램이 '어느 컴퓨터의 어느 화면에 그릴지' 적은 값이 DISPLAY예요. 다른 컴퓨터가 내 화면에 그리려면 내 쪽에서 허락해 줘야 해서, 허락 명단(xhost)이나 비밀 열쇠(xauth)를 써요.
시험용 정의
X 클라이언트는 환경 변수 DISPLAY를 보고 어느 X 서버에 화면을 그릴지 정한다. 원격 X 서버에 그리려면 그 서버가 접속을 허용해야 하는데, 이를 xhost(호스트 단위) 또는 xauth(쿠키 인증)로 관리한다.
비유로 이해하기
DISPLAY는 택배 받을 주소, xhost는 "이 집에서 온 택배는 받아 줘"라고 경비실에 적어 둔 명단, xauth는 택배 기사가 가져와야 하는 비밀 코드다.
자세히
DISPLAY 형식
| 값 | 뜻 |
|---|---|
| :0 | 이 컴퓨터(로컬)의 첫 번째 X 서버 (가장 흔함) |
| :1 | 로컬에서 실행한 두 번째 X 서버 |
| localhost:10.0 | ssh -X 포워딩이 만든 가상 디스플레이의 흔한 형태 |
| 192.168.0.25:0.0 | 192.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와 인증도 자동으로 설정된다.
시험에 이렇게 나와요
- DISPLAY 값 해석:
:0= 로컬 첫 X 서버,:1= 두 번째 X 서버,호스트:0= 그 컴퓨터의 X 서버 - 원격 프로그램 화면을 내 모니터에 띄울 때 DISPLAY는 프로그램(X 클라이언트) 쪽에서 설정
- X 서버에 접근을 허가 →
xhost 호스트(xhost만 치면 허용 목록 확인) - 인증 키 파일 → ~/.Xauthority, 키 확인 →
xauth list $DISPLAY, 키 등록 →xauth add $DISPLAY . 키
확인 문제
Q1. export DISPLAY=192.168.0.25:0.0에서 가운데 :0은 무엇을 뜻할까?
- 사용자 번호 0(root)
- 디스플레이(X 서버) 번호 0
- 모니터 해상도 등급
- 포트 번호 0
정답 보기
2번 디스플레이(X 서버) 번호 0
DISPLAY 형식은 호스트:디스플레이번호.스크린번호다. :0은 그 컴퓨터의 첫 번째 X 서버, .0은 그 서버의 첫 번째 스크린이다. X 서버가 쓰는 TCP 포트는 6000 + 디스플레이 번호라 :0이면 6000번.
Q2. DISPLAY=:1의 의미로 알맞은 것은?
- 원격 컴퓨터의 첫 X 서버
- 로컬의 두 번째 X 서버
- X 서버를 끄라는 뜻
- 첫 번째 모니터의 두 번째 스크린
정답 보기
2번 로컬의 두 번째 X 서버
번호는 0부터. :1은 두 번째.
Q3. X 윈도 인증 키(MIT-MAGIC-COOKIE)가 저장되는 사용자 파일은?
- ~/.xinitrc
- ~/.Xauthority
- /etc/X11/xorg.conf
- ~/.Xdefaults
정답 보기
2번 ~/.Xauthority
~/.Xauthority다. X 서버에 접속할 수 있는 인증 키를 담는다. ~/.xinitrc는 startx 설정, xorg.conf는 X 서버 설정 파일이다.
Q4. A 컴퓨터의 프로그램을 B 컴퓨터 화면에 띄우려 한다. DISPLAY 변수를 설정하는 곳은?
- B(X 서버)에서
- 둘 다 설정하지 않음
- A(X 클라이언트)에서
- 라우터에서
정답 보기
3번 A(X 클라이언트)에서
프로그램이 도는 A가 어디에 그릴지 DISPLAY로 정한다. B에서는 xhost로 허용.
Q5. X 클라이언트가 화면을 출력할 X 서버를 지정하는 환경 변수는?
- XSERVER
- XAUTH
- TERM
- DISPLAY
정답 보기
4번 DISPLAY
DISPLAY다. 예를 들어 DISPLAY=:0이면 이 컴퓨터의 첫 번째 화면에 띄운다.
Q6. 모든 호스트에서 내 X 서버로의 접속을 허용하는 명령은?
- xhost +
- xhost -
- xhost all
- xauth +
정답 보기
1번 xhost +
xhost + (위험하므로 실습에서만).
Q7. ssh 접속 시 X11 포워딩을 켜는 옵션은?
- -X
- -L
- -x
- -D
정답 보기
1번 -X
-X로 켠다. 소문자 -x는 오히려 끈다.
헷갈리기 쉬운 O·X
xhost 명령은 X 클라이언트(프로그램이 실행되는 쪽)에서 실행해 권한을 준다.
정답 보기
X 접속을 받는 X 서버(화면 쪽)에서 실행한다.
DISPLAY=:0 은 로컬 컴퓨터의 첫 번째 X 서버를 뜻한다.
정답 보기
O 호스트를 생략하면 로컬.
xauth 방식은 ~/.Xauthority의 쿠키로 인증한다.
정답 보기
O MIT-MAGIC-COOKIE-1.