리눅스 환경에서 "원격 데스크탑"으로 가장 유명한 SW로 꼽히는 것이 바로 VNC이다. 최근에는 xrdp를 많이 사용하긴 하지만, 그래도 전통을 갖고 있는 VNC...
하지만 보통 우리가 알고 있는 VNC SW는 오픈소스 프로젝트가 아닌 것 같다.
RealVNC 라는 업체에서 제공하는 Free 버전의 경우 "For individual private use." 용도로 되어있다.
뭐 일단 내 PC와 Server가지고 나만 사용하는 것이니까... 라이선스에는 부합하는 것 같은데...
VNC에 대해서 검색을 하다보면 그 대중성과 유명세에 비해서 정보들이 많지 않다.
다들 잘 아는데, 나만 모르는 건가? 나만 검색을 잘 못하는 건가?
일단 VNC를 사용할 때에 좀 귀찮은 부분이 "Desktop Environments"을 맞추는 것이다.
검색 결과의 대부분이 VNC를 셋팅할 때에 가볍게 사용하기 위한 XFce 같은 것으로 알려주고 있다.
나는 그냥 사용하고 있는 Unity 화면과 비스무리하게 사용하고 싶은데...
그리고, 대부분의 포스트에서 보면 실행 권한에 대한 언급을 볼 수 없었다.
대체 root 권한으로만 해야하는 것인지, 그냥 일반 계정 권한으로 하면 안되는 것인지...
또 하나는, 포트인데... VNC에서 사용하는 포트가 몇 번인지 명확히 설명해준 글이 많지 않았다.
때로는 방화벽이나 Proxy 등으로 사용하는 포트가 궁금했는데...
결국은 목마른 넘이 우물을 파듯이...
하나씩 찾아보고, 직접 테스트 해보고 하면서 다음과 같이 정리해보았다.
기본 실행 환경은 Ubuntu Desktop 버전을 기본값으로 그대로 설치하고,
기본 패키지 업그레이드는 기본 상태에서 최신으로 계속 갱신해 놓은 상태이다.
아래 내용을 테스트한 환경은 아래와 같다.
- Ubuntu 12.04 LTS 64bit
- Ubuntu 14.04 LTS 64bit
- Ubuntu 16.04 LTS 64bit
1. 필요 패키지 설치
본래는 아래 패키지들도 설치해야하지만, 이미 설치되어 있어서 제외하고 설치해도 된다.
- sudo apt-get install gnome-settings-daemon gnome-terminal metacity nautilus
아래와 같이 필요한 패키지를 설치하자
$ sudo apt-get install gnome-panel vnc4server
2. 첫 실행
첫 실행을 해서 기본 Config 등의 구성을 하도록 하면 되는데,
sudo 없이 계정 권한으로 실행하여도 된다.
$ vnc4server
아래와 같이 패스워드 설정을 진행하면 된다.
위의 화면을 보면 알겠지만, 계정 권한으로 실행을 하면 해당 계정으로 환경 설정을 한다.
3. 기본 창 관리자 변경
기본 생성된 xstartup 파일에는 내가 원하는 대로 환경 설정이 되어 있지 않다.
가장 먼저 실행된 vnc4server를 종료부터 하고 xstartup 파일을 수정하자.
$ vnc4server -kill :1
$ cp ~/.vnc/xstartup ~/.vnc/xstartup.old
$ nano ~/.vnc/xstartup
#!/bin/sh
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
4. 다시 실행하기
실행할 때에 해상도를 미리 정해줘야 한다.
$ vnc4server -geometry 1024x768
5. VNC Viewer 로 접속하기
다른 PC에서 해당 IP로 접속하면 된다. 물론 뒤에 디스플레이 번호 붙여서...
예쁘게 잘 나온다!
6. 부팅 時 자동으로 실행
이제 잘 되는 것 까지는 확인했으니, 부팅할 때에 알아서 되도록만 하면 되겠다.
$ sudo nano /etc/init.d/vncserver
아래 내용을 그대로 사용하면 된다.
USER 부분이나 해상도 부분은 각자 상황에 맞게...
#!/bin/bash
### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: networking
# Required-Stop: networking
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
PATH="$PATH:/usr/bin/"
export USER="u12"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
. /lib/lsb/init-functions
case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;
stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;
restart)
$0 stop
$0 start
;;
esac
exit 0
$ sudo chmod +x /etc/init.d/vncserver
$ sudo update-rc.d vncserver defaults
이제는 재부팅을 하여도 잘 된다~!!!
아! 그리고 Display 1번인 경우 디폴트 포트는 5901 을 사용한다!
다른거 없이 이거 하나만 열리면 사용할 수 있다.
앗싸~ 여기까지!