개발(IT)/Linux(CentOS)

Rocky Linux 10.2에서 PuTTY로 xterm 띄우기 (X11 포워딩 완전 정리)

isony 2026. 9. 11. 15:41
반응형

Rocky Linux 10.2에서 PuTTY로 xterm 띄우기 (X11 포워딩 완전 정리)

한 줄 요약 — Windows에 X 서버(VcXsrv)를 띄우고, PuTTY에서 X11 포워딩을 켜고, Rocky 서버에 xorg-x11-xauth를 설치하면 끝입니다. 이 세 가지 중 하나라도 빠지면 Can't open display 에러를 만납니다.

Rocky Linux 10.2 서버는 대부분 GUI 없이 최소 설치로 운영합니다. 그런데 오라클 설치 관리자(runInstaller), dbca, xclock 같은 GUI 도구를 써야 할 때가 반드시 옵니다. 이럴 때 서버에 데스크톱 환경을 통째로 올릴 필요 없이, SSH X11 포워딩으로 창 하나만 Windows로 가져오면 됩니다.

이 글에서는 Rocky Linux 10.2 + PuTTY + VcXsrv 조합으로 xterm을 띄우는 전 과정을 정리했습니다.

 

목차

  1. 먼저 구조를 이해하기
  2. 준비물
  3. 1단계 — Windows에 X 서버 설치
  4. 2단계 — PuTTY X11 포워딩 설정
  5. 3단계 — Rocky 서버 패키지 설치
  6. 4단계 — sshd 설정 확인
  7. 5단계 — 접속 및 실행 확인
  8. 자주 만나는 에러 5가지
  9. 보너스 — 터미널 타입만 xterm으로 바꾸고 싶다면

 

1. 먼저 구조를 이해하기

X11에서 가장 헷갈리는 부분이 서버와 클라이언트의 역할이 우리 직관과 반대라는 점입니다.

구분 위치 역할

X 클라이언트 Rocky Linux 서버 그림을 그리는 프로그램 (xterm, dbca 등)
X 서버 내 Windows PC 그림을 실제로 화면에 표시

즉 xterm은 서버에서 실행되고, 화면 출력만 SSH 터널을 타고 Windows로 넘어옵니다. 그래서 Windows 쪽에 X 서버(VcXsrv)를 반드시 먼저 띄워 두어야 합니다. 이 개념만 잡히면 뒤에 나오는 에러들의 원인도 자연스럽게 이해됩니다.

 

2. 준비물

  • Rocky Linux 10.2 서버 (SSH 접속 가능한 일반 계정)
  • Windows PC + PuTTY
  • X 서버 프로그램 — VcXsrv 권장 (Xming도 동작하지만 업데이트가 멈춘 지 오래됨)
  • 서버 방화벽에 22번 포트 오픈 (X11용 포트를 따로 열 필요는 없습니다)

X11 트래픽은 SSH 터널 안으로 들어가기 때문에 6000번대 포트를 방화벽에서 열 필요가 없습니다. 오래된 블로그 글에서 firewall-cmd --add-port=6000/tcp를 시키는 경우가 있는데, X11UseLocalhost yes 환경에서는 불필요하고 보안상 좋지도 않습니다.

 

3. 1단계 — Windows에 X 서버 설치

VcXsrv를 설치한 뒤 시작 메뉴에서 XLaunch를 실행합니다. 마법사에서 아래 4가지만 맞추면 됩니다.

화면 설정값

Display settings Multiple windows 선택
Display number 0
Client startup Start no client
Extra settings Disable access control 체크

마지막 Disable access control이 핵심입니다. 이걸 빼먹으면 서버에서 창을 띄우려 할 때 Windows 쪽 X 서버가 연결을 거부합니다.

실행하면 별도의 창은 뜨지 않고 작업 표시줄 트레이에 X 모양 아이콘만 생깁니다. 이 아이콘이 살아 있어야 정상이며, Windows 방화벽 팝업이 나오면 사설 네트워크 허용을 눌러 주세요.

설정을 매번 반복하기 귀찮다면 마법사 마지막 단계에서 Save configuration으로 .xlaunch 파일을 만들어 두고, 시작 프로그램에 등록해 두면 편합니다.

 

4. 2단계 — PuTTY X11 포워딩 설정

PuTTY를 실행하고 왼쪽 트리에서 Connection → SSH → X11로 이동합니다.

  1. Enable X11 forwarding 체크
  2. X display location 에 localhost:0 입력
  3. Remote X11 authentication protocol 은 MIT-Magic-Cookie-1 (기본값)
  4. X authority file for local display 는 비워 둡니다

⚠️ 설정을 마쳤으면 Session 화면으로 돌아가서 Save를 눌러야 다음 접속에도 유지됩니다. 이걸 빠뜨려서 "어제는 됐는데 오늘은 안 된다"는 경우가 정말 많습니다.

XLaunch에서 Display number를 1로 지정했다면 여기에도 localhost:1을 넣어야 합니다. 두 값은 항상 같아야 합니다.

 

5. 3단계 — Rocky 서버 패키지 설치

# 버전 확인
cat /etc/rocky-release

# 필수 패키지
sudo dnf install -y xorg-x11-xauth xterm

# 테스트용 GUI 앱 (xclock, xeyes) — 선택
sudo dnf install -y xorg-x11-apps

xorg-x11-xauth가 가장 중요합니다. 이 패키지가 없으면 sshd가 X11 인증 쿠키를 만들지 못해서 접속해도 $DISPLAY 변수 자체가 설정되지 않습니다. "설정 다 했는데 DISPLAY가 비어 있다"는 문의의 90%가 이 케이스입니다.

xterm 패키지를 찾지 못한다면 EPEL 저장소를 추가합니다.

sudo dnf install -y epel-release
sudo dnf install -y xterm

설치 확인:

rpm -q xorg-x11-xauth xterm

 

6. 4단계 — sshd 설정 확인

/etc/ssh/sshd_config를 열어 아래 항목을 확인합니다.

sudo vi /etc/ssh/sshd_config
X11Forwarding yes
X11UseLocalhost yes
XAuthLocation /usr/bin/xauth

Rocky 10부터는 설정이 /etc/ssh/sshd_config.d/ 아래 여러 파일로 쪼개져 있을 수 있습니다. 메인 파일만 고쳐 놓고 하위 파일에서 덮어써지는 경우가 있으니, 최종 적용값은 반드시 아래 명령으로 확인하세요.

# 문법 검사 후 재시작
sudo sshd -t
sudo systemctl restart sshd

# 실제 적용값 확인 (이게 가장 확실합니다)
sudo sshd -T | grep -i x11

정상이라면 이렇게 나옵니다.

x11forwarding yes
x11displayoffset 10
x11uselocalhost yes

x11displayoffset 10이 바로 접속 후 $DISPLAY가 localhost:10.0으로 잡히는 이유입니다.

 

7. 5단계 — 접속 및 실행 확인

VcXsrv를 켠 상태에서 PuTTY로 접속한 뒤:

echo $DISPLAY
# localhost:10.0  ← 이렇게 나와야 정상

xterm &

Windows 화면에 검은 xterm 창이 뜨면 성공입니다. 그 창 안에서 hostname을 쳐 보면 Rocky 서버 이름이 나옵니다. 창은 Windows에 떠 있지만 프로세스는 서버에서 돌고 있다는 뜻입니다.

&를 붙여 백그라운드로 실행해야 PuTTY 셸을 계속 쓸 수 있습니다. 다른 GUI 도구도 똑같은 방식으로 띄우면 됩니다.

xclock &
xeyes &
./runInstaller     # 오라클 설치 관리자 등

 

 

8. 자주 만나는 에러 5가지

① $DISPLAY가 비어 있음

가장 흔한 케이스. 원인은 대부분 셋 중 하나입니다.

# 1) xauth 설치 확인
rpm -q xorg-x11-xauth

# 2) 서버 설정 확인
sudo sshd -T | grep -i x11forwarding

# 3) 위 두 개를 고쳤다면 반드시 재접속 (기존 세션에는 적용되지 않음)

② Error: Can't open display: localhost:10.0

$DISPLAY 값은 있는데 창이 안 뜨는 경우입니다. Windows 쪽 문제로 보면 거의 맞습니다.

  • VcXsrv가 실제로 실행 중인가? (트레이 아이콘 확인)
  • Windows 방화벽이 VcXsrv를 막고 있지 않은가?
  • XLaunch에서 Disable access control을 체크했는가?

③ sudo로 실행하면 실패

xauth 쿠키는 접속한 일반 계정에 발급되기 때문에 root에는 없습니다.

# 일반 계정에서 쿠키 확인
xauth list

# root로 넘기기
sudo env DISPLAY=$DISPLAY XAUTHORITY=$HOME/.Xauthority xterm &

가능하면 root로 GUI를 띄우지 말고 일반 계정으로 실행하는 것이 정석입니다.

④ 한글이 네모(□)로 깨짐

xterm 기본 폰트에 한글 글리프가 없어서 생깁니다.

sudo dnf install -y google-noto-sans-cjk-fonts
xterm -fa 'Noto Sans Mono CJK KR' -fs 12 &

매번 옵션을 주기 번거로우면 ~/.Xresources에 넣어 둡니다.

XTerm*faceName: Noto Sans Mono CJK KR
XTerm*faceSize: 12
XTerm*locale: true

⑤ 창이 느리고 뚝뚝 끊김

X11은 원래 LAN을 전제로 만들어진 프로토콜이라 지연이 큰 회선에서는 답답합니다.

  • PuTTY → Connection → SSH → Enable compression 체크
  • 그래도 느리면 X11 포워딩 대신 VNC나 XRDP를 검토하세요. 창 하나만 잠깐 띄울 때는 X11, 데스크톱을 계속 쓸 때는 VNC가 맞습니다.

 

9. 보너스 — 터미널 타입만 xterm으로 바꾸고 싶다면

만약 GUI가 목적이 아니라 PuTTY 터미널의 TERM 값을 xterm으로 맞추는 것이 목적이었다면 훨씬 간단합니다. vi에서 색이 안 나오거나 화살표 키가 이상하게 동작할 때 필요한 설정이죠.

PuTTY → Connection → Data → Terminal-type string 에 아래 값을 입력합니다.

xterm-256color

접속 후 확인:

echo $TERM
# xterm-256color

X 서버도, 추가 패키지도 필요 없습니다.

 

마무리

정리하면 순서는 이렇습니다.

① VcXsrv 실행 → ② PuTTY X11 체크 → ③ xauth 설치 → ④ sshd 설정 → ⑤ 재접속

이 순서만 지키면 대부분 한 번에 됩니다. 안 될 때도 이 순서대로 거꾸로 짚어 나가면 원인이 금방 나옵니다. GUI 설치 도구를 쓸 일이 있는 분들께 도움이 되었으면 합니다.

 

 

반응형