VNC
IT 위키
더 많은 작업
- Virtual Network Computing; VNC
- 원격 컴퓨터의 그래픽 화면을 네트워크로 받아 보면서 키보드·마우스로 조작하는 원격 데스크톱 시스템
VNC 는 영국 케임브리지의 올리베티·오라클 연구소(뒤의 AT&T 케임브리지 연구소)에서 만들어 1998년 소스를 공개했다. 화면을 보여 주는 VNC 서버와 화면을 받아 조작하는 VNC 뷰어(클라이언트)로 이루어지고, 둘은 RFB(Remote Framebuffer) 프로토콜로 화면의 픽셀(프레임버퍼) 변화와 입력 이벤트를 주고받는다. 화면 단위로 동작하므로 운영체제와 관계없이 리눅스 서버를 윈도우에서, 윈도우를 맥에서 조작할 수 있다.
- 접속 포트는 5900 + 디스플레이 번호다. 디스플레이 :1 은 5901 번을 쓴다
- 대표 구현 : TigerVNC, TightVNC, RealVNC, x11vnc(이미 떠 있는 X 화면을 그대로 공유)
리눅스의 VNC 서버는 모니터 없는 가상 X 서버(Xvnc)를 띄우고 그 위에서 데스크톱 세션을 실행한다. 여러 사용자가 각자 다른 디스플레이 번호로 동시에 쓸 수 있다.
$ vncpasswd # 접속 비밀번호 설정(~/.vnc/passwd) $ vncserver :1 -geometry 1024x768 -depth 24 # 디스플레이 :1 을 1024x768, 24비트 색으로 시작 $ vncserver -kill :1 # 디스플레이 :1 종료 $ vncviewer 192.168.0.10:1 # 다른 컴퓨터에서 접속
- -geometry 가로x세로 : 가상 화면의 해상도를 지정한다
- -depth 비트 : 색 깊이(8, 16, 24, 32)를 지정한다
- -localhost : 자기 자신에서 오는 접속만 받는다. SSH 터널과 함께 쓴다
- -SecurityTypes : 인증·암호화 방식을 지정한다(VncAuth, TLSVnc, X509Vnc 등)
- TigerVNC 는 사용자별 기본 옵션을 ~/.vnc/config 에
geometry=1024x768처럼 한 줄씩 적는다 - 레드햇 계열 8 이후는 /etc/tigervnc/vncserver.users 에
:1=사용자로 디스플레이와 사용자를 짝짓고systemctl start vncserver@:1로 서비스를 띄운다 - 예전 CentOS 6 계열은 /etc/sysconfig/vncservers 에
VNCSERVERS="2:user",VNCSERVERARGS[2]="-geometry 1024x768"처럼 적었다. 이 파일은 지금 배포판에는 없다
- 기본 VNC 인증은 비밀번호를 8자까지만 쓰고, 기본 RFB 통신은 화면과 키 입력을 암호화하지 않는다
- 그래서 SSH 터널로 감싸거나 TLS 를 쓰는 보안 유형을 고르고, 5900번대 포트를 인터넷에 직접 열지 않는다 → 원격접속 공격
| 구분 | VNC | RDP |
|---|---|---|
| 만든 곳 | 올리베티·오라클 연구소, 오픈 소스 | 마이크로소프트 |
| 보내는 것 | 화면 픽셀(프레임버퍼)의 변화 | 그리기 명령과 화면 정보 |
| 기본 포트 | 5900 + 디스플레이 번호 | 3389 |
| 세션 | 서버의 가상 X 화면이나 현재 화면을 공유 | 윈도우 사용자 세션을 새로 연다 |