Linux/CentOS2012. 3. 2. 14:08

리눅스 전문가들은 텍스트 모드에서 작업하는 게 그래픽 모드 보다 사용이 편하고 빠르다고 한다. 하지만, 초보자 입장에서는 아무래도 그래픽 모드가 편하고, 텍스트 모드에 익숙하다 해도 몇몇 작업은 그래픽 모드가 편할 수 있다. 그래서, CentOS에 그래픽 모드로 원격 접속하는 방법을 알아보도록 하겠다.

1. 서버에 소프트웨어 설치

일단 CentOS가 설치된 서버에 GUI가 설치되어 있어야 한다. 만약 설치되어 있지 않다면 다음과 같이 명령하여 설치한다.

yum groupinstall "X Window System" "KDE Desktop"

원격 접속은 VNC를 사용한다. 서버에 VNC 소프트웨어를 설치한다.

yum install tigervnc-server

2. 방화벽 설정

방화벽에서 5901 포트를 열어준다.

VNC 기본 포트는 5900이며, 위에 2:root 3:otherID 이 숫자만큼 더한 포트가 각 계정에 할당된 포트임
5902 포트 : root
5903 포트 : otherID 


메뉴 > 시스템 > 관리 > 방화벽
- 그 외의 포트
  . 5900, tcp, vnc-server
  . 5901, tcp
- 포트포워딩
  . 소스: tcp, 5900
  . 수신지: 로컬포트포워딩, 5901


#system-config-securitylevel-gui

또는

#system-config-securitylevel


단지 포트가 막힌 경우, #/etc/init.d/iptables stop

 iptables 설정여부 확인: #iptables -nL

 해지된 경우,

 Chain INPUT (policy ACCEPT)

target     prot opt source               destination        

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

로 표시됨.
 

  • 방화벽에서 해당 사용자의 port를 오픈하여야 한다.
#--- /etc/sysconfig/vncservers에 등록된 1번부터 5901 port를 사용 한다.
  • VNC Client에서 접속 시
VNC Viewer로 접속시 "IP:5901"로 접속 한다.TightVNC Viewer로 접속시 "IP:1"로 접속 한다.
  • 처음 접속이 완료되면 xstartup 파일이 생성된다. 이를 수정하여 예쁜화면을 사용하자.
cdcd .vncvi xstartup    ### twm &                #--- 이 라인을 주석 처리(삭제) 한다.    gnome-session &          #--- 이 라인을 추가 한다.
3. 설정 파일 수정

VNC 설정 파일은 

/etc/sysconfig/vncservers

이다. 설정 파일 마지막에 다음을 추가한다. 

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

root이라는 사용자에게 1번을 할당하고 접속 시 해상도를 1024X768로 한다는 뜻이다. 

 //////////////////////////////////////////////////////////////////////////

#vi  /etc/sysconfig/vncservers
VNCSERVERS="1:root 2:apple"
VNCSERVERARGS[1]="-geometry 640x480"
VNCSERVERARGS[2]="-geometry 800x600"

#vncpasswd

#su  -  apple
$vncpasswd
$exit
#

#service  vncserver  restart

리눅스에서 다른 vncserver 로 접속할 때는
#vncviewer 를 입력하면 된다.

 http://wiki.centos.org/HowTos/VNC-Server

////////////////////////////////////////////////////////////////////////// 
 

4. 비밀번호 설정

다음의 명령어로 비밀번호를 설정한다.

vncpasswd root

5. VNC 실행

처음 실행시 다음과 같이 명령한다.

vncserver

비밀번호를 입력하면 다음과 같이 몇가지 파일을 생성했다는 메시지가 나온다.

New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log

이후 다시 시작할 때에는 다음과 같이 명령하면 된다.

service vncserver start

6. VNC Viewer 설치

접속을 하는 컴퓨터에 VNC Viewer 프로그램을 설치한다. 내가 사용하는 것은 TightVNC이다.

http://www.tightvnc.com/download.php

에서 다운로드 받을 수 있다. 설치 옵션에서 Viewer 프로그램만 설치하면 된다.

7. 접속

VNC Viewer를 실행시키고, 접속하려는 서버의 아이피와 ':1'을 입력하고 [Connect]를 클릭한다. 즉, 아이피가 192.168.0.101이라면

192.168.0.101:1

이라고 입력하면 된다. 그리고 비밀번호 입력하면 접속 된다.

8. Starting vncserver at boot

To start vncserver at boot, enter the command /sbin/chkconfig vncserver on.

---> http://wiki.centos.org/HowTos/VNC-Server 



CentOS 5.5 에는 기본적으로 VNC Server가 설치되어 있어 환경설정과 서비스 등록만으로 VNC를 사용할 수 있다.

1. 환경

- CentOS 5.5  : 설치됨
- VNC Viewer : http://www.uvnc.com/download/ 에서 다운로드


2. 설정

# vi /etc/sysconfig/vncservers


3. 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"


VNCSERVERS="1:root"

VNCSERVERARGS[1]="-geometry 12800x800"


4. VNC 암호 설정

# vncpasswd
Password:
Verify:


5. Port 확인 및 방화벽 오픈

# netstat -antp
 

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name

tcp        0      0 0.0.0.0:5801                0.0.0.0:*                   LISTEN      25974/Xvnc

tcp        0      0 0.0.0.0:5901                0.0.0.0:*                   LISTEN      25974/Xvnc

tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2629/portmap

tcp        0      0 0.0.0.0:6001                0.0.0.0:*                   LISTEN      25974/Xvnc



# vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT
  (추가)

5-1. iptable restart
# /etc/rc.d/init.d/iptables restart

6. VNC Server 시작

# service vncserver start

 
7. 서버 부팅시 자동 실행 service로 등록

# chkconfig vncserver on

  
8. 윈도우에서 그래픽모드로 보기 위한 설정

# vi /root/.vnc/xstartup



#!/bin/sh


wing two lines for normal desktop:

# unset SESSION_MANAGER (# 제거)

# exec /etc/X11/xinit/xinitrc (# 제거)


[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey

vncconfig -iconic &

xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

twm &


# Uncomment the following two lines for normal desktop:

unset SESSION_MANAGER

exec /etc/X11/xinit/xinitrc


[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey

vncconfig -iconic &

xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

twm &



9. VNC Viewer로 접속 확인 


10. 접속화면

11. 참고
http://jonnychoe.egloos.com/5472045


( VNC 서버 실행 시 오류 및 해결 )

xauth:  creating new authority file /root/.Xauthority

xauth: (stdin):1:  bad display name "mycent:1" in "add" command


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

( 해결책 )
/etc/hosts, /etc/sysconfig/network 두 파일안에 호스트명이 제대로 입력되어 있는지 확인해 본다.

  • 실행 파일 : /usr/bin/
  • 환경 설정 : /etc/sysconfig/vncservers
  • 기동 종료 : /etc/init.d/vncserver start, stop, restart 


  • VNC server로 리눅스 화면 보기
        http://newpolaris.springnote.com/pages/1625192

        서버에서 아래와 같이 vnc 서버 준비
          $ vncserver [ -geometry 1280x1024 ] [ :1 ]

        클라이언트에서 아래와 같이 접근
          $ vncviewer server_addr:1

        이렇게 띄우면 서버의 로컬화면과 무관한 X 환경이 뜬다.
        그리고, vncviewer 종료해도 이 환경의 동작상태는 그대로 유지된다.
        즉 vncview가 동작하는 클라이언트 컴이 갑자기 죽거나 재부팅되더라도 서버 동작은 끊기지 않는다.
        다만, twm 기반의 조악한 환경이라서 불편한데 gnome/kde 등의 편리한 기본환경을 쓰고싶으면,
        ~/.vnc/xstartup 파일을 편집하여 아래 두 줄을 주석에서 풀어주면 된다.

          unset SESSION_MANAGER
          exec /etc/X11/xinit/xinitrc

        vnc를 통해 gnome에 로긴한 상태에서 gnone 로그아웃하면 GUI 환경이 죽은것도 산 것도 아닌 메롱상태에 빠진다.
        이 경우 서버에 ssh 접근하여 아래와 같이 해당 vnc 세션을 죽이고 다시 띄워야 했다.
          $ sudo vncserver -kill :1


    원도우에서 리눅스 vnc 원격제어하는 방법
        http://comzil.com/1216

    VNC로 윈도우에서 Linux로 접속하기
        http://kldp.org/node/43670

        vnc를 통해 X윈도우 로컬화면(localhost:0)을 공유하기 위한 vino 사용법이 나온다.
        ( http://kldp.org/node/43670#comment-155851 )

        리눅스박스에서 그놈에 로그인하고 프로그램-기본설정-원격데스크탑 메뉴에 들어가서
        "다른 사용자가 데스크탑을 제어할수 있도록 합니다"에 체크하고,
        클라이언트에서 server_address:0 으로 vnc 접근하는 식이다.

        리눅스박스에서 로그아웃 하거나, VNC 접근한 클라이언트가 로그아웃하게 되면
        공유할 "로컬화면"이 사라지므로 공유가 성립되지 않게 된다.
        리눅스박스에서 그놈에 로긴하는 것이 vino 동작의 전제조건이 되는 것 같다.

        rpmforge에서 설치한 x11vnc도 vino와 비슷하게 동작한다.
        (리눅스박스의 로컬화면에서 x11vnc 서버를 띄우고 간단히 설정하면 로컬화면이 vnc로 공유됨)


    Freenx in Wikipedia
        http://en.wikipedia.org/wiki/Freenx

        NX의 주요 구성요소는 nxproxy와 nxagent인데,
        - nxproxy는 X서버와 X클라이언트 모두에서 동작하며 X 프로토콜을 압축(1:10 ~ 1:100)하는 역할을 하고
        - nxagent는 X클라이언트에서 동작하며 X 프로토콜의 라운드트립지연을 제거하는 역할을 한다고 함.
        - NX 하부의 통신은 ssh를 써서 이루어지므로 프로토콜 전체가 암호화된다.
        - NX 세션은 suspend/resume이 가능하다. 원격접근한 상태에서 로컬PC가 갑자기 죽어도 
          세션은 유지되므로 서버에서는 여전히 작업이 진행된다. 이후 다시 접근하여 GUI 제어권을 되찾을 수 있다.

        주의: X서버/X클라이언트는 흔히 생각하는 서버/클라이언트와는 동작위치가 다르다.
           보통은 사용자PC가 클라이언트가 되고 원격지의 고성능장비가 서버 역할을 하지만,
           "X서버"는 사용자PC에 떠있는 Xming, Cygwin-X, Xmanager같은 X서버(X터미널 에뮬레이터)를 뜻하고,
           "X클라이언트"는 원격지의 장비에서 동작하는 xterm 같은 프로그램을 가리킨다.
           "X클라이언트"는 "X서버"가 제공하는 디스플레이 서비스를 이용해 자신의 GUI를 나타내는 식이다.

    FreeNX 홈페이지
        http://freenx.berlios.de/

    NX server using FreeNX
        http://wiki.centos.org/HowTos/FreeNX

        CentOS5에서는 FreeNX가 extras repo에서 제공된다. 아래와 같이 쓰면 된다.
        $ sudo service freenx-server start

        NX는 X 세션을 최적화하는 기능 말고도 VNC, RDP 등에 대한 proxy기능도 제공한다.
        VNC proxy 기능은 서버박스에서 vncviewer를 띄워 제3의 장비(또는 서버박스 자신.
        이 경우 x11vnc도 쓰임)에 접근하고 그 VNC 세션을 중계해주는 식으로 동작한다.
        RDP proxy 기능은 서버박스에서 rdesktop을 띄워 제3의 장비에 접근하여 RDP 세션을 중계해준다.

        NX를 통해 gnome 환경을 띄웠을때 한글입력기가 제대로 동작하지 않는 문제를 해결하는 방법.
        /etc/profile이나 ~/.bash_profile 정도에 아래 세 줄 추가.
        (참고 : http://withdev.com/entry/Linux-개발-환경-구축하다)

          export XMODIFIERS="@IM=SCIM"
          export GTK_IM_MODULE=scim
          export QT_IM_MODULE=scim

    "Re: NX service unavailable or access is disabled" 오류 해결
        http://ubuntuforums.org/showthread.php?t=1012056

        클라이언트에서 /etc/nxserver/client.id_dsa.key 대신 아래의 키를 쓰게 하니 해결되었다.
        $ cat /var/lib/nxserver/home/.ssh/client.id_dsa.key

    ===========================================================================================

    vnc 설치 방법

    #yum -y install vnc

    #yum -y install vnc-server

    로 vnc와 서버를 설치한다.

     

    /usr/bin/에 아래의 실행파일들이 설치된다.

     

    Xvnc : vnc서버 실행, vncserver가 Xvnc를 실행한다
    vncconfig : 환경설정 파일인 듯 하다
    vncpasswd : vnc클라이언트에서 접속시 사용하는 비밀번호를 설정할 수 있다 
    vncserver : vnc서버를 실행한다. (pstree | grep Xvnc로 실행확인)
    vncviewer : 클라이언트가 vnc서버에 접속할 때 사용한다
    x0vncserver : 아직 모르겠음


    vnc서버 실행 방법

    #vncserver :포트번호

    포트번호를 적지 않으면 5900번에서부터 1씩 순차적으로 받는다.

    포트번호를 적으면 [5900 + 포트번호 = 실제 포트번호]이런식으로 적용된다.

    위 내용은

    #vi /usr/bin/vncserver

    으로 확인이 가능하다.

    #chkconfig vncserver on (서버 재부팅 시 자동시작)


    #vncserver 를 입력했는데도 Xvnc가 실행이 안되는 경우

    source설치와 yum, rpm설치를 닥치는대로 하다보면 실행파일이 엉키는 경우가 있다.

    path로 설정되어 있는 vncserver가 둘이다 보니 충돌이 나서 실행된 것 처럼 보이지만 실행되지 않는 것.

    둘 중 하나를 삭제하면 제대로 실행된다.


    1. yum, rpm 설치를 했다면 /usr/bin/ 폴더에 vnc관련 파일이 있다면 전부 삭제한다.

    2. 소스 설치를 했다면

    #yum -y remove vnc

    #yum -y remove vnc-server

    로 삭제해준다.


    ※교훈 : 프로그램을 설치와 삭제는 확실히 해줘야 뒷탈이 없다.



    /usr/bin/vncserver 설정

     

     

    vncserverv파일에서는 또한 .vnc/xstartup의 기본적으로 들어가는 내용을 설정할 수 있다.

    또 클라이언트로 접속했을 때 화면의 해상도도 설정할 수 있다.

    36 $geometry = "1024x768";


    vncserver 환경설정

    # vi /etc/sysconfig/vncservers

    # VNCSERVERS="포트번호:유저ID"
    # VNCSERVERARGS[포트번호]="-geometry 1152x864 -nolisten tcp -nohttpd -localhost"
    여기에서도 해상도를 설정할 수 있다.


     

    vncpasswd로 비밀번호 설정

    vncserver를 실행하면 클라이언트로 접속할 시 입력해야하는 비밀번호를 설정한다.

    이것은 나중에 vncpasswd로 재설정 할 수 있다.

     

    #vi .vnc/xstartup 설정

    vncserver를 실행하고 나면 홈폴더에 .vnc/xstartup이라는 파일이 생긴다.

    여기에서는 클라이언트가 접속했을 때 보이는 화면을 설정할 수 있다.

    초기 설정은 twm &으로 되어 있는데 접속하면 회색윈도우에 퍼미널만 떠있다.

    GUI로 보이게 하려면 KDE와 GNOME 둘 중 하나로 설정해준다.


    VNC의 GUI 설정하기

    서버의 GUI와 같은 화면을 보려면

     4 # unset SESSION_MANAGER
     5 # exec /etc/X11/xinit/xinitrc

    이 부분의 주석처리를 제거해도 된다.

     

    KDE로 할 경우

    twm &부분을 지우고 startkde &으로 적어준다.

    GNOME으로 할 경우

    twm &부분을 지우고 gnome-session &으로 적어준다.

     

    혹, 저렇게 해도 GUI로 제대로 안 보이는 경우가 있다.

    그건 KDE나 GNOME이 제대로 설치가 안 되어 있어서 그런 것 같다.

    그럴 때는 다시 설치해준다.

     

    KDE 설치

    #yum groupinstall "KDE (K Desktop Environment)"

     

    GNOME 설치

    #yum groupinstall "GNOME Desktop Environment"


    ※교훈 : 프로그램을 설치와 삭제는 확실히 해줘야 뒷탈이 없다.

    리눅스에서 뭔가가 다른 사람들이 한 방법으로 되지 않으면 반드시 설치가 제대로 됐는지 삭제는 제대로 됐는지 확인해본다.

    [출처] CentOS5 VNC 설치|작성자 금소

    'Linux > CentOS' 카테고리의 다른 글

    CentOS ssh 접속 한글깨짐 수정  (0) 2012.03.02
    CentOS 방화벽 설정  (0) 2012.03.02
    CentOS 명령어  (0) 2012.03.02
    CentOS 단축키  (0) 2012.03.02
    CentOS 관련 사이트  (0) 2012.03.02
    Posted by iWithJoy