강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

▒ SU의 CentOS7 강좌11 4. 원격접속 - 1.VNC

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

▒ SU의 센트OS(CentOS) 7 강좌11 4. 원격접속 - 1.VNC


#################################################
    작성자 : 에스유
    작성일 : 2014.08.27
    대상 OS : CentOS7 x86_64

 본 강좌를 기반으로 서적을 집필합니다. 연재강좌가 마무리되고 몇달 후면 서적이 나오겠죠? CentOS7은 서적도 없지만 강좌도 많이 부족하네요. 리눅스 서버를 10년 넘게 구축하고 관리하고 컨설팅하면서 꼭 필요한 부분과 알아야 할 부분들을 꼼꼼히 체크하면서 강좌를 써보려합니다. 강좌중 오탈자가 있거나 설명이 부족하고 잘못된 경우 service@linux.kr으로 메일한통 부탁드립니다. 강좌가 수정되면 더 많은 분들께 도움이 될것이라 생각하고 강좌를 기반으로 집필될 서적또한 완성도가 높아지지 않을까 생각합니다.
#################################################


4. 원격접속
CentOS는 다양한 종류의 원격 접속 방법을 지원한다. 서버는 원격지에 있는 경우가 대부분이다. 원격지에 서버를 쉽고 빠르게 접속할 수 있는 방법은 그래픽 모드로 접속하는 방법과 텍스트 모드로 접속하는 방법이 있다. 가장 일반적으로 사용하는 방법은 ssh를 통한 원격접속이며 성능 및 보안면에서 가장 강력하지만, 초보자에게는 사용법이 까다로울 수 있다.
각 원격 접속 방법에 따라 서버에서 설정해 줘야 하는 사항들이 있다. VNC, SSH, Telnet에 대해 알아보자.


4.1. VNC
VNC(Virtual Network Computing)는 RFB프로토콜을 이용하여 원격 데스크탑을 공유하는 시스템이다. VNC를 사용하여 CentOS의 그래피컬한 환경에 접속할 수 있다. VNC는 데스크탑을 공유하기 때문에 로컬화면과 원격화면이 같고 제어권 또한 같다. 다중 사용자 로그인을 위해서는 별도설정 및 VNC서버의 가동이 필요하다. 또 VNC는 별도의 비밀번호를 사용한다. VNC를 이용하여 시스템에 접속하기 위해 서버의 설정이 필요하며, 클라이언트에는 별도의 프로그램이 필요하다.


4.1.1. VNC 서버 설정 

  (1) 세션 공유 서버 설정

VNC를 사용하기 위해서는 CentOS에 VNC기능을 사용할 수 있게 설정하며, 비밀번호 등 여러 가지 설정이 필요하다. 사용자의 세션을 공유하는 방법으로 VNC 서버 설정을 해보자. 
먼저 아래 그림과 같이 화면공유 설정을 한다.

프로그램 => 시스템 도구 => 설정 => 공유 => 화면 공유

위 그림은 화면 공유 설정 화면이다. 이는 VNC 서버를 설정하는 것이다. 다음과 같이 설정한다.

원격보기 : 켬
   : VNC를 이용하여 원격에서 데스크톱을 볼 수 있게 한다. 

원격 조작 : 켬
   : VNC를 이용하여 데스크톱을 제어할 수 있게 하며, 이 기능을 활성화 시키지 않으면 원격에서 제어권을 얻을 수 없다.

모든 연결 허용 : 끔
 :  VNC 연결 시 연결 허용 유무를 선택하는 부분이다. 끔으로 하면 로컬에서 허용을 하지 않아도 원격 접속이 되며, 켬으로 하면 로컬에서 허용해야 원격 접속이 된다. ( 영어로 Approve All Connections 인데 한글화를 잘못한 것으로 보인다.)

암호 필요  : 켬
   : VNC를 이용하여 시스템에 접속할 때 암호를 사용할 것을 설정한다. 만약 없다면, 아무나 다 들어올 수 있기 때문에 꼭 암호를 어렵게 설정하기 바란다.

암호 : 암호
   : VNC 접속 시 사용할 암호를 입력한다. 

위와 같이 설정되었다면 닫기를 클릭하여 설정을 마무리 한다. VNC 뷰어에서는 디스플레이 지정 없이 IP로 연결하면 된다.

[참  고] TigerVNC 뷰어 프로그램으로 접속되지 않을 때
TigerVNC 뷰어로 접속했을 때 위와 같은 오류가 난다면 다음과 같이 설정해 보자. 이 오류는 세션공유 VNC 서버 설정에서만 나타나며 GNOME에서 사용하는 vino VNC 서버의 버그라고 알려져 있다. 

~]# gsettings set org.gnome.Vino require-encryption false

꼭, 서버에 접속된 상태에서 입력한다. SSH를 사용하여 원격 접속하여 위와 같이 입력하면 dconf관련 오류가 나면서 실행되지 않는다. 이 설정은 추가 보안요구를 비활성화 시키는 것이다.
다음으로 설정된 내역을 확인해 보자.

~]# gsettings get org.gnome.Vino require-encryption
false

위와 같이 입력하면 false가 출력되어야 정상인 것이다. 이렇게 설정된 후에는 TigerVNC 뷰어로 접속하면 정상적으로 접속될 것이다.



[참고] VNC에서 사용하는 Port
VNC는 TCP/5900+N번을 사용하며 여기서 N은 디스플레이 번호이다. 넉넉하게 TCP 5900~5910을 오픈한다. 방화벽에서 해당 포트가 열려 있어야 VNC서버에 접속할 수 있다.

CentOS 방화벽(iptables) 허용방법 GUI

CentOS 방화벽을 오픈하는 방법을 알아보자.

“프로그램” -> “잡다” -> “방화벽”을 선택하여 방화벽 설정 프로그램을 실행시킨다. 위 그림과 같이 좌측 상단에 설정:에는 런타임에서 영구적으로 변경한다. 좌측 영역 중에서 public을 선택하고 우측 탭에 포트탭을 선택하고 하단 추가버튼을 클릭하여 포트를 추가한다.
“포트/포트 범위:” 5900-5910
“프로토콜:” tcp 선택
과 같이 설정한다. 이는 TCP 5900~5910포트로 서버에 들어오는 패킷을 허용한다는 것이다. 
설정 완료 후 Firewalld를 다시 읽어 적용시켜보자.
옵션 -> Firewalld 다시 불러오기를 선택한다. 런타임에서도 적용된 것을 확인할 수 있다.



(2) 독립 세션 서버 설정
독립 세션 서버 방식을 사용하기 위해서는 VNC서버를 추가 설치해야 한다. 앞에서 설정한 세션 공유 방식에서 제공하는 VNC서버는 Vino라는 GNOME을 위한 VNC서버이기 때문에 독립 세션 VNC서버에서는 사용할 수 없다. 다음과 같이 VNC서버를 설치 해 준다.

1) VNC 서버 프로그램 설치
~]# yum install tigervnc-server

2) VNC 서버 설정
VNC서버 프로그램을 설치하였다면 VNC 서버 설정을 해야 한다. CentOS 6 이하 버전은 /etc/sysconfig/vncservers 파일을 편집기로 열어 설정하였지만 CentOS 7 부터는 /lib/systemd/system/vncserver@.server으로 변경되었고 vncserver@.service 파일을 vncserver@:디스플레이번호.service 형식으로 복사하여 사용한다. 예를 들면 디스플레이 번호 2번을 사용하고자 한다면 다음과 같이 복사한다.

~]# cp /lib/systemd/system/vncserver@.service \
/lib/systemd/system/vncserver@:2.service

디스플레이 번호에 따라 포트가 할당된다. 디스플레이 번호가 1이면 5901을 위와 같이 디스플레이 번호 2를 사용하는 경우 5902 포트를 사용하게 된다. 
앞에서 복사한 /lib/systemd/system/vncserver@:2.service 설정파일을 편집기로 열어 다음과 같이 편집한다.
<USER>로 표시된 부분을 시스템의 사용자 계정으로 변경한다.

...
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l doly -c "/usr/bin/vncserver %i"
PIDFile=/home/doly/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
...

3) VNC 비밀번호 설정
VNC클라이언트가 VNC서버에 접속할 때 사용할 비밀번호를 설정한다. 
 ~]# su - doly
~ ]$ vncpasswd
Password: 암호입력
Verify: 암호입력

위와 같은 방법으로 위에서 설정한 사용자의 권한으로 전환한 다음 vncpasswd명령어로 암호를 생성한다. 생성된 암호는 ~/.vnc/passwd에 저장된다. ~는 사용자 홈디렉토리이다. 위 예에서 ~는 /home/doly가 된다.

4) VNC 서버 시작 
~]# systemctl start vncserver@:2.service 

디스플레이번호 2번의 VNC서버를 시작한다. 
서버 부팅 시 자동으로 서비스가 실행될 수 있게 다음과 같이 설정한다.
~]# systemctl enable vncserver@:2.service

5) VNC 서버 재시작

  ~]# systemctl daemon-reload

설정을 변경하였다면 위와 같은 명령어로 빠르게 재시작할 수 있다.

6) VNC 서버 비활성화

  ~]# systemctl stop vncserver@:2.service 

디스플레이번호 2번의 VNC서버 서비스를 종료한다.
서버 부팅 시 자동으로 서비스가 실행되는 부분을 다음과 같이 제거한다.

  ~]# systemctl disable vncserver@:2.service


4.1.2. VNC 원격접속 (Windows)

VNC를 사용하여 CentOS에 접속하기 위해서는 별도의 프로그램이 필요하다. Windows 환경에서 VNC를 지원하는 프로그램은 아주 많이 있다. 앞서 CentOS에 설치한 TigerVNC의 Windows 버전을 설치하도록 하겠다. 성능 및 기능이 향상된 다양한 프로그램들이 나와 있이니 찾아보기 바란다.

프로그램명 : TigerVNC
사이트 : http://tigervnc.org/

TigerVNC는 서버와 Viewer기능을 모두 제공하며 여러 옵션을 제공한다. TigerVNC 윈도우즈 버전을 설치하여 실행해 보았다.
위 그림과 같이 VNC 서버의 IP:디스플레이번호를 입력하고 Connect 버튼을 클릭하여 서버에 연결한다. 세션공유 VNC 서버 설정을 한 경우 IP만 입력하여 접속한다.

다음으로 서버의 계정에 설정한 암호를 입력하고 OK 버튼을 클릭한다.

위 그림은 TigerVNC Viewer를 이용하여 CentOS에 접속한 화면이다. 로컬환경에서 로그인하여 사용하는 것과 동일하게 모든 기능을 사용할 수 있다.


4.1.3. VNC 원격접속 (Linux)

  CentOS 및 타 Linux클라이언트 환경에서는 X를 사용한다면, X환경에서 제공해주는 프로그램으로 VNC 서버에 접속할 수 있다. 하지만 VNC 종류에 따라 프로토콜이 조금씨 다르기 때문에 동일한 프로그램을 사용하는 것이 가장 좋은 선택이다. 앞에서 설치한 TigerVNC의 리눅스 버전의 VNC뷰어를 설치해 보도록 하자.

 ~]# yum install tigervnc


다음 명령어를 터미널 환경에서 실행시켜 보자.

 ~]$ vncviewer


윈도우즈 환경에서 VNC 뷰어를 실행시킨 결과와 동일하다.  VNC 서버의 IP:디스플레이번호를 입력하고 Connect 버튼을 클릭하여 서버에 연결한다. 세션공유 VNC 서버 설정을 한 경우 IP만 입력하여 접속한다.

다음으로 서버의 계정에 설정한 암호를 입력하고 OK 버튼을 클릭한다.

위 그림은 TigerVNC Viewer를 이용하여 CentOS에 접속한 화면이다. 로컬환경에서 로그인하여 사용하는 것과 동일하게 모든 기능을 사용할 수 있다.



 이상으로 11번째 강좌를 마무리 하겠습니다. CentOS 7의 VNC 서버 설정의 변화가 좀 있고, 한글화에 조금의 문제가 있어 오해의 소지가 있네요. xrdp, x2go, xdncp등의 여러 원격접속 프로그램이 있지만, vnc가 가장 손을 덜대면서 사용할 수 있어 좋은듯 합니다. 2014년 8월 27일(수) 에스유였습니다.^^ 
 
#################################################
* 본 강좌는 언제든 갱신될 수 있으며, 원글은 www.linux.co.kr 강좌>리눅스>SU의 연재강좌 에서 수정됩니다. 
* 본 강좌의 일부 또는 전체를 인용하실 경우, 반드시 출처를 밝혀 주시기 바랍니다.

* 수정이력 :
 2014.09.02(화) : 손영석님의 지적으로 세션공유 VNC 에서 TigerVNC 뷰어 접속 오류 해결법 추가.
 2014.08.27(수): 최초작성

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,806 개
  • 현재 접속자 :  148 명