98..Etc/Etc...2008. 7. 16. 10:51
반응형

VNC Server 설정 및 사용

 


1. VNC 개요


VNC(Virtual Network Computing)는 원격 서버의 X윈도우 데스크탑 환경을 네트워크를 통해 자신의 컴퓨터에 출력하여 사용할 수 있게 하는 기능을 제공합니다.

VNC 접속에는 Server와 Client 개념으로 접속을 하므로, 접속을 시도하는 원격지 컴퓨터가 Client가 되며, Client의 화면에 보여지는 내용, 즉 실제 작업이 이루어지는 공간이 Server에 해당됩니다.


현재 한소프트 리눅스 2005 Workstation에 포함되어 있는 VNC는 X환경의 차이로 인해 동작하는데 일부 문제가 있습니다.

XFree86 (기존의 X환경 도구)이 4.4 버전부터 라이센스가 변경되어 더 이상 오픈 소스로서 이 도구를 사용하지 못하게 되자, freedesktop.org에서 xorg라는 이름으로 X환경 도구를 재배포하게 되었으며, 한소프트 리눅스에서는 이 xorg를 기본 X환경 도구로 채택하여 사용하고 있는데, 여기서 xorg와 VNC의 호환에 약간의 문제가 발생하였기 때문입니다.


환 경 변화에 따른 과도기적인 현상으로 VNC 새 버전에서는 이러한 현상들이 수정되리라 생각되지만, 일단 현재의 시스템에서 VNC를 사용하기 위해서는 한소프트 리눅스에 기본 포함되어 있는 VNC(realvnc) 보다는 tightvnc를 사용하기를 권장합니다.


[참고 Site]

http://www.tightvnc.org/download.html
http://rpm.pbone.net/ 에서 tightvnc-server 로 검색


위 사이트에서 VNC 서버를 다운받아서 설치합니다.
tightvnc -server의 경우 이전 XFree86과의 의존성 문제 등으로 설치 시 오류가 발생할 수도 있는데, 이때는 --force --nodeps 옵션으로 강제로 설치합니다. 테스트 결과 강제로 설치해도 사용에 별 문제가 없었습니다.

 


2. VNC 설치

아래의 순서대로 기존에 설치되어 있는 VNC를 삭제하고 tightvnc 프로그램을 설치합니다.


① 기존에 설치된 VNC 프로그램이 있는지 확인하고, 있다면 삭제합니다.

[기존 VNC 프로그램 확인 및 제거]

[root@localhost ~]# rpm -qa | grep vnc

vnc-4.0-9

vnc-server-4.0-9

[root@localhost ~]# rpm -e vnc vnc-server


② 앞서 설명한 참고 Site에서 tightvnc 프로그램을 다운 받습니다.

[TightVNC 다운로드]

tightvnc-1.2.9-1.i386.rpm           # Client용 프로그램

tightvnc-server-1.2.9-1.i386.rpm    # Server용 프로그램


③ Server쪽 시스템과 Client쪽 시스템 각각에 해당 프로그램들을 설치합니다.

[Server용 프로그램 설치]

[root@localhost ~]# rpm -Uvh tightvnc-server-1.2.9-1.i386.rpm

오류: Failed dependencies:

        XFree86 is needed by tightvnc-server-1.2.9-1

[root@localhost ~]# rpm -Uvh tightvnc-server-1.2.9-1.i386.rpm --nodeps --force

준비 중...                  ################################# [100%]

   1:tightvnc-server        ################################# [100%]

[Client용 프로그램 설치]

[root@localhost ~]# rpm -Uvh tightvnc-1.2.9-1.i386.rpm

준비 중...                  ################################# [100%]

   1:tightvnc               ################################# [100%]




3. VNC 설정 및 구동


(1) 서버 설정 및 구동


Client에서 Server 접속 시 서버에서 인증할 VNC 비밀번호를 6자리 이상으로 설정합니다.

[VNC 패스워드 설정]

[root@localhost ~]# vncpasswd

Using password file /root/.vnc/passwd

VNC directory /root/.vnc does not exist, creating.

Password:

Verify:

[root@localhost ~]#

※ 위 명령을 실행하면, 해당 계정의 홈디렉토리 아래에 .vnc라는 디렉토리가 생성되고, 이 안에 있는 passwd 파일에 앞서 입력한 패스워드가 암호화되어 저장됩니다.


이후에 아래와 같은 vncserver 명령어로 VNC 서버를 가동합니다.

[VNC 서버 가동]

[root@localhost .vnc]# vncserver

New ''X'' desktop is localhost.localdomain:3

Starting applications specified in /root/.vnc/xstartup

Log file is /root/.vnc/localhost.localdomain:3.log

[root@localhost .vnc]#

위와 같이 vncserver를 가동하면 해당 계정 홈디렉토리의 .vnc 아래에 xstartup 파일과 log 파일이 생성됩니다.

xstartup은 Client에서 VNC 서버로 접속할 때 사용하는 X환경 초기화 실행스크립트이며, log는 접속 결과를 저장하는 파일입니다.


보통 리눅스 부팅 시 런레벨(Run-Level) 5로 X윈도우 환경을 띄우는 경우 디스플레이(Display) 0번을 사용합니다.

여기서 VNC 서버를 실행하면 이미 로딩된 디스플레이에서 순차적으로 번호를 증가하며 Xvnc를 띄웁니다.

vncserver 명령을 여러번 실행하면, 그때마다 순차적으로 증가된 번호로 vncserver가 가동됩니다.

위의 예에서는 ''localhost.localdomain:3''으로 표시되어 있는 것을 볼 때, vncserver를 3번 실행했을 때의 화면임을 알 수 있습니다.

이렇게 3개의 vncserver가 가동되면 Client에서 원격 접속 시 3개의 루트로 각각 접속할 수 있게 되겠죠.


그리고, /tmp 디렉토리 아래에 외부에서 접속했을 때 임시로 사용되는 디렉토리가 생성됩니다.

[VNC 임시 디렉토리]

/tmp/.X11-unix/X0

/tmp/.X11-unix/X1

/tmp/.X11-unix/X2

/tmp/.X11-unix/X3



참고

※ 추가 설정

위의 설정만으로도 VNC에 정상적으로 접속할 수 있습니다만, 좀 더 다양한 설정을 위해 /usr/bin/vncserver 파일을 직접 수정할 수도 있습니다.

[VNC Server 상세 설정]

$geometry = "1024x768";

$depth = 24;

$desktopName = "X";

$vncClasses = "/usr/share/vnc/classes";

$vncUserDir = "$ENV{HOME}/.vnc";

$fontPath = "unix/:7100";

......

$cmd = "Xvnc :$displayNumber";

$cmd .= " -desktop " . &quotedString($desktopName);

$cmd .= " -httpd $vncClasses";

$cmd .= " -auth $xauthorityFile";

$cmd .= " -geometry $geometry" if ($geometry);

$cmd .= " -depth $depth" if ($depth);

$cmd .= " -pixelformat $pixelformat" if ($pixelformat);

$cmd .= " -rfbwait 120000";

$cmd .= " -rfbauth $vncUserDir/passwd";

$cmd .= " -rfbport $vncPort";

$cmd .= " -fp $fontPath" if ($fontPath);

$cmd .= " -co $colorPath" if ($colorPath);



(2) 클라이언트 설정 및 구동


앞서 다운 받은 rpm 파일 중 Client용 프로그램을 설치하였다면, 클라이언트 PC에서 아래와 같은 명령으로 VNC Viewer를 실행합니다.

[VNC Viewer 실행 (1)]

[root@localhost ~]# vncviewer &


  

콘솔창에서 "vncviewer &" 명령을 실행하면, 접속할 서버의 IP 주소 및 Password를 입력하는 창이 나타나며, 정상 입력되면 아래 그림과 같이 서버의 화면이 나타나게 됩니다.


또는 아래와 같이 콘솔창에서 "192.168.179.138:1"과 같이 바로 입력해도 됩니다.

IP뒤에 붙는 숫자는 앞서서 vncserver를 여러 개 띄운 것과 같이 접속할 수 있는 vncserver 번호로 이해하시면 되겠습니다.

[VNC Viewer 실행 (2)]

[root@localhost root]# vncviewer 192.168.179.138:1

VNC server supports protocol version 3.3 (viewer 3.3)

Password:

VNC authentication succeeded

Desktop name "root''s X desktop (localhost.localdomain:1)"

Connected to VNC server, using protocol version 3.3

VNC server default format:

  32 bits per pixel.

  Least significant byte first in each pixel.

  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0

Using default colormap which is TrueColor.  Pixel format:

  16 bits per pixel.

  Least significant byte first in each pixel.

  True colour: max red 31 green 63 blue 31, shift red 11 green 5 blue 0

Using shared memory PutImage



4. VNC 종료


위와 같이 VNC에 접속하여 여러 가지 작업을 마친 후 종료할 때,

VNC Viewer는 그냥 창만 닫으면 되지만, Server의 경우는 아래의 명령과 같이 해당 데몬을 종료해야 합니다.


[VNC 서버 종료]

[root@localhost ~]# vncserver -kill :1

Killing Xvnc process ID 15618

[root@localhost ~]#

위의 명령은 1번 vncserver를 종료하는 방법입니다.


~/.vnc/localhost.localdomain:1.pid 파일에서 1번 vncserver의 PID 값을 확인하여, 해당 프로세스를 종료하게 됩니다.

만약 강제로 프로세스를 죽이거나 비정상적인 종료를 하였다면 다음번 vncserver를 실행할 때 위의 PID 파일을 참조하여 경고 메시지를 보여주게 됩니다.

이 런 경고 메시지를 보이지 않게 하려면, ~/.vnc/ 경로 아래에 있는 vncserver 관련 파일들 중, 해당 번호의 pid 및 log 파일을 삭제하고, /tmp/.X11-unix/ 아래에서 vncserver가 사용하던 파일들을 삭제해주면 됩니다.


5. 기타


VNC Server의 서비스 데몬은 아래와 같은 명령으로 가동할 수 있습니다.

[VNC Server 서비스 데몬 가동]

[root@localhost ~]# /etc/init.d/vncserver restart

Shutting down VNC server:                                  [  OK  ]

Starting VNC server:                                       [  OK  ]

[root@localhost ~]#



참고

위의 서비스를 시스템 가동 시에 자동으로 실행하기 위해서는 ntsysv를 실행하여 vncserver에 체크해 줌으로써 가능해 집니다.

만약 ntsysv를 실행하였을 때, vncserver 항목이 보이지 않는다면, 아래 명령으로 vncserver 항목을 추가해 줍니다.

[ntsysv 항목 추가]

[root@haansoft ~]# chkconfig --add vncserver


이렇게 서비스 데몬이 가동된 다음, 앞서 보았던 vncserver의 각 서비스를 하나씩 가동해 주는 것입니다.

(vncserver는 가동될 때마다 숫자가 증가되어 붙으므로, 이 숫자로 구별할 수 있습니다.)

vncserver의 각 서비스도 자동으로 실행하고 싶다면, /etc/sysconfig/vncservers 파일에 아래와 같은 내용을 추가합니다.

[VNC Server 개별 서비스 자동 설정]

VNCSERVERS="1:root 2:haansoft 3:haansoftlinux"

위 의 내용은 1번 vncserver에는 root 계정으로 접속을 허용하고, 2번 vncserver에는 haansoft 계정으로, 3번 vncserver에는 haansoftlinux 계정으로의 접속을 허용하도록 미리 설정해 놓는 것입니다.

위와 같은 형식으로 원하는 숫자만큼의 사용자를 미리 지정해 둘 수 있습니다.


-----------------------------------------------------

이글의 출처는 http://www.haansoftlinux.com/ 입니다.

Posted by 1010