1. VNC 서버가 설치되었는지 확인한다.

[root@Server ~]# rpm -qa vnc
vnc-4.1.2-14.el5_5.4
[root@Server ~]#




2. VNC 사용자를 설정한다.

[root@Server ~]# vi /etc/sysconfig/vncservers
# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the lines below to start a VNC server on display :2
# as my 'myusername' (adjust this to your own).  You will also
# need to set a VNC password; run 'man vncpasswd' to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted!  For a secure way of using VNC, see
# <
URL:http://www.uk.research.att.com/archive/vnc/sshvnc.html>.

# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.

# Use "-nohttpd" to prevent web-based VNC clients connecting.

# Use "-localhost" to prevent remote VNC clients connecting except when
# doing so through a secure tunnel.  See the "-via" option in the
# `man vncviewer' manual page.

# VNCSERVERS="2:myusername"
# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"


아래와 같이 계정을 추가한다.

# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the lines below to start a VNC server on display :2
# as my 'myusername' (adjust this to your own).  You will also
# need to set a VNC password; run 'man vncpasswd' to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted!  For a secure way of using VNC, see
# <
URL:http://www.uk.research.att.com/archive/vnc/sshvnc.html>.

# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.

# Use "-nohttpd" to prevent web-based VNC clients connecting.

# Use "-localhost" to prevent remote VNC clients connecting except when
# doing so through a secure tunnel.  See the "-via" option in the
# `man vncviewer' manual page.

VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp -nohttpd"


vncservers 파일은 기본 내용이 들어있으며 입맛에 맞게 설정을 하면 된다.
기본적으로 X윈도가 0번 화면을 사용하므로 0번이 아닌 다른 번호를 사용해야 에러 없이 사용이 가능하다.
0번으로 설정하면 로컬에서 X윈도를 사용할 수 없게되어 1번을 사용하면서 다른 프로그램에 영향을 줄 수 있으므로 1번 설정을 한다.

VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp -nohttpd"


# 으로 된 주석을 지우거나 새로 추가하면 된다.
VNCSERVERS="1:root"와 VNCSERVERARGS[1]는 동일한 숫자를 넣어주었으며 0번보다 큰 숫자를 입력하였다.

-localhost 역시 삭제하였는데 로컬에서만 접속하는 옵션이므로, 원격 제어를 가능하게 하기 위해서 삭제하였다.

마지막으로 800x600의 해상도에서 1024x768으로 변경하였다.




3. 방화벽에 VNC를 추가하여 준다.

VNC의 포트번호는 5900번이며 X윈도 화면번호를 더해준 값이 실제로 사용하는 포트 번호이다.
위에서 설정한 것을 바탕으로 5900번에 1번을 더한 5901번으로 설정하면 된다.

[root@Server ~]# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5000 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 5000 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5001 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 5001 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6633 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 6633 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT


아래와 같이 추가한다.

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 5901 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 5901 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5000 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 5000 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5001 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 5001 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6633 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 6633 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT


방화벽을 다시 시작하여 추가한 포트가 열리도록 한다. 
[root@Server ~]# service iptables restart
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]

[root@Server ~]#




4. VNC를 접속 할 때 사용할 패스워드를 설정한다.

[root@Server ~]# vncpasswd
Password:
Verify:

[root@Server ~]#




5. VNC 서버를 가동한다.

VNC가 동작하고 있는지 확인을 하고, 동작하지 않는다면 실행시킨다.
[root@Server ~]# service vncserver status
Xvnc is stopped
[root@Server ~]#

동작하지 않으므로, 아래와 같은 명령으로 동작 시킨다.
[root@Server ~]# service vncserver start
Starting VNC server: 1:root xauth:  creating new authority file /root/.Xauthority

New 'Server:1 (root)' desktop is Server:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/Server:1.log

                                                           [  OK  ]
[root@Server ~]#

정상적으로 동작하고 있는지 다시 확인한다.
[root@Server ~]# service vncserver status
Xvnc (pid 14733) is running...
[root@Server ~]#




6. VNC 서버가 제대로 동작하고 있는지 접속하여 확인한다.


VNC Viewer를 이용하여 접속을 하는데 Server라고 된 부분에 해당 서버의 주소를 입력하고, :5901은 위에서 설명한대로 VNC가 사용 할 포트번호이다.



위에서 설정한 패스워드를 입력하여 VNC에 접속을 한다.


위와 같은 기본 X윈도의 화면을 출력할 것이다.
설정이 전혀 되어있지 않으므로 원격제어를 하기 위한 화면과 다소 거리가 멀다.




7. 원격으로 접속 할 때 X윈도를 로컬에서 보듯이 변경하는 설정을 한다.

[root@Server ~]# pwd
/root
[root@Server ~]# cd .vnc/
[root@Server .vnc]# mv xstartup xstartup.old
[root@Server .vnc]# cp /etc/X11/xinit/xinitrc xstartup
[root@Server .vnc]# service vncserver restart
Shutting down VNC server: 1:root                           [  OK  ]
Starting VNC server: 1:root
New 'Server:1 (root)' desktop is Server:1

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/Server:1.log

                                                           [  OK  ]
[root@Server .vnc]#

홈디렉토리( /root )를 확인하고 .vnc 디렉토리에 있는 xstartup 이라는 설정 관련 내용을 로컬 서버의 X윈도에서 사용되는 xinitrc 파일을 복사하는 과정이다. VNC 서비스를 재시작하여 바뀐 설정을 불러온다.




8. VNCviewer를 이용하여 서버에 다시 접속한다.

위 그림과 같이 로컬에서 보는 화면과 동일한 화면으로 로컬 서버를 제어 할 수 있다.



'Linux tools > VNC' 카테고리의 다른 글

다수의 계정으로 한 서버에 VNC 접속하는 법  (0) 2010.08.31
블로그 이미지

쭈꾸댕이

아직 어설픈 실력으로 나름 제가 하는 것에 대한 것들을 옮기는 공간입니다. 틀린 부분도 있을 수 있으니 이 점 양해하시고, 도움이 되셨으면 좋겠네요.

,