SW/리눅스

Ubuntu 18.04 : VNC 설치 및 구성하는 방법, 예제, 명령어

얇은생각 2020. 12. 14. 07:30
반응형

이 가이드에서는 Ubuntu 18.04에 VNC 서버를 설치하고 구성하는 데 필요한 단계를 설명합니다. 또한 SSH 터널을 통해 VNC 서버에 안전하게 연결하는 방법도 알려드리겠습니다.

VNC(Virtual Network Computing)는 키보드와 마우스를 사용하여 다른 컴퓨터를 원격으로 제어할 수 있는 그래픽 데스크톱 공유 시스템입니다. 마이크로소프트 원격 데스크톱 프로토콜(RDP)의 오픈 소스 대체 솔루션입니다.

 

 

 

필수 구성 요소

튜토리얼을 계속하기 전에 sudo 권한을 가진 사용자로 로그인했는지 확인합니다.

 

 

 

데스크톱 환경 설치

대부분의 서버에는 데스크톱 환경이 설치되어 있지 않으므로 우선 경량 데스크톱 환경을 설치하는 것부터 시작하겠습니다.

Ubuntu 리포지토리에서 사용할 수 있는 몇 가지 데스크톱 환경(DE)이 있습니다. Xfce 를 설치할 예정입니다. 빠르고 안정적이며 가벼운 데스크톱 환경으로 원격 서버에서 사용하기에 이상적입니다. 

Xfce를 서버에 설치하려면 다음 명령을 입력합니다.

sudo apt update
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

 

 

시스템에 따라 Xfce 패키지를 다운로드하고 설치하는 데 다소 시간이 걸릴 수 있습니다.

 

 

 

VNC 서버 설치

또한 TightVNC , TigerVNC 그리고 x11vnc와 같은 Ubuntu 저장소에 몇 개의 다른 VNC 서버가 있습니다. 각각의 VNC 서버는 속도와 보안 면에서 다른 장점과 단점을 가지고 있습니다.

TigerVNC를 설치할 예정입니다. 능동적으로 유지 관리되는 고성능 VNC 서버입니다.

Ubuntu 서버에 TigerVNC를 설치하려면 다음 명령을 입력합니다.

sudo apt install tigervnc-standalone-server tigervnc-common

 

 

이제 VNC 서버가 설치되었으므로 다음 단계는 초기 구성을 생성하고 암호를 설정하는 것입니다. vncserver 명령을 실행할 때는 sudo를 사용하지 않습니다.

vncserver

 

 

암호를 입력 및 확인하고 보기 전용 암호로 설정할지 여부를 묻는 메시지가 표시됩니다. 보기 전용 암호를 설정하도록 선택하면 사용자가 마우스 및 키보드를 사용하여 VNC 인스턴스와 상호 작용할 수 없습니다.

# You will require a password to access your desktops.
# 
# Password:
# Verify:
# Would you like to enter a view-only password (y/n)? n
# /usr/bin/xauth:  file /home/linuxize/.Xauthority does not exist
# 
# New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com
# 
# Starting applications specified in /etc/X11/Xvnc-session
# Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log
# 
# Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/linuxize/.vnc/passwd :1 to connect to the VNC server.

 

 

vncserver 명령을 처음 실행하면 암호 파일이 생성되어 ~/.vnc에 저장됩니다. 이 디렉토리는 존재하지 않는 경우 작성됩니다. 

위의 출력에서 호스트 이름 뒤에 :1이 있습니다. vnc 서버가 실행 중인 디스플레이 포트 번호를 나타냅니다. 이 경우 서버는 TCP 포트 5901(5900+1)에서 실행되고 있습니다. vncserver를 사용하여 두 번째 인스턴스를 생성하면 다음 사용 가능한 포트에서 실행됩니다. 즉, :2는 서버가 포트 5902(5900+2)에서 실행 중임을 의미합니다. 

명심해야 할 점은 VNC 서버와 작업할 때 :X는 5900+X를 참조하는 디스플레이 포트입니다.

다음 단계를 계속하기 전에 -kill 옵션이 포함된 vncserver 명령과 서버 번호를 인수로 사용하여 VNC 인스턴스를 중지합니다. 이 예에서는 서버가 포트 5901(:1)에서 실행 중이므로 다음을 사용하여 중지합니다.

vncserver -kill :1

# Killing Xtigervnc process ID 7264... success!

 

 

 

VNC 서버 구성 

서버에 Xfce와 TigerVNC가 모두 설치되어 있으므로 Xfce를 사용하도록 TigerVNC를 구성해야 합니다. 이렇게 하려면 다음 파일을 만듭니다.

# ~/.vnc/xstartup

nano ~/.vnc/xstartup

 

 

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4 

 

 

파일을 저장한 후 닫습니다. 위의 명령은 TigerVNC 서버를 시작하거나 재시작할 때마다 자동으로 실행됩니다. 

~/.vnc/xstartup 파일에도 실행 권한이 있어야 합니다. 다음 chmod 명령을 실행하여 권한이 올바른지 확인합니다.

chmod u+x ~/.vnc/xstartup

 

 

VNC 서버에 추가 옵션을 전달해야 하는 경우 config라는 파일을 생성하고 한 줄에 하나씩 옵션을 추가합니다. 다음과 같은 예입니다.

# ~/.vnc/config

geometry=1920x1080
dpi=96

 

 

 

Systemd 단위 파일 생성

다른 systemd 서비스와 마찬가지로 필요에 따라 VNC 서비스를 시작, 중지 및 재시작할 수 있도록 systemd 장치 파일을 생성합니다.

텍스트 편집기를 열고 다음 구성을 복사하여 붙여넣습니다. 사용자 이름과 일치하도록 7번 라인에서 사용자 이름을 변경해야 합니다.

# /etc/systemd/system/vncserver@.service

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple
User=linuxize
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

 

 

파일을 저장한 후 닫습니다.

위의 명령은 TigerVNC 서버를 시작하거나 재시작할 때마다 자동으로 실행됩니다.

sudo systemctl daemon-reload

 

 

다음을 사용하여 새 장치 파일을 생성했음을 systemd에 알립니다.

sudo systemctl enable vncserver@1.service

 

 

 

@ 기호 뒤의 숫자 1은 VNC 서비스가 실행될 디스플레이 포트를 정의합니다. 즉, 이전 섹션에서 설명한 대로 VNC 서버가 포트 5901에서 수신 대기합니다.

다음을 실행하여 VNC 서비스를 시작합니다.

sudo systemctl start vncserver@1.service

 

 

다음 항목으로 서비스가 성공적으로 시작되었는지 확인합니다.

sudo systemctl status vncserver@1.service

# ● vncserver@1.service - Remote desktop service (VNC)
#    Loaded: loaded (/etc/systemd/system/vncserver@.service; indirect; vendor preset: enabled)
#    Active: active (running) since Thu 2018-08-16 19:05:54 UTC; 4s ago
#   Process: 9893 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
#  Main PID: 9900 (vncserver)
#     Tasks: 0 (limit: 507)
#    CGroup: /system.slice/system-vncserver.slice/vncserver@1.service
#            ‣ 9900 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg

 

 

 

VNC 서버 연결

VNC는 암호화된 프로토콜이 아니며 패킷 스니핑의 대상이 될 수 있습니다. 권장되는 방법은 SSH 터널을 생성하여 포트 5901의 로컬 시스템에서 동일한 포트의 서버로 트래픽을 안전하게 전달하는 것입니다.

 

 

 

Linux 및 MacOS SSH 터널링 설정

시스템에서 Linux, MacOS 또는 기타 Unix 기반 운영 체제를 실행하는 경우 다음 명령을 사용하여 SSH 터널을 쉽게 생성할 수 있습니다.

ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address

 

 

사용자 암호를 입력하라는 메시지가 표시됩니다.

사용자 이름과 server_ip_address를 사용자 이름과 서버의 IP 주소로 교체해야 합니다.

 

 

 

윈도우즈 SSH 터널링 설정

윈도우즈를 실행하는 경우 PuTTY SSH 클라이언트를 사용하여 SSH 터널링을 설정할 수 있습니다.

Putty를 열고 Host name 또는 IP address 필드에 서버 IP 주소를 입력합니다.

 

Ubuntu 18.04 : VNC 설치 및 구성하는 방법, 예제, 명령어 1

 

 

연결 메뉴의 상자에서 SSH를 확장하고 터널을 선택합니다. 소스 포트 필드에 VNC 서버 포트(5901)를 입력하고 대상 필드에 server_ip_address:5901을 입력한 후 아래 이미지와 같이 Add 버튼을 클릭합니다.

 

 

Ubuntu 18.04 : VNC 설치 및 구성하는 방법, 예제, 명령어 2

 

매번 입력할 필요가 없도록 세션 페이지로 돌아가 설정을 저장합니다. 원격 서버에서 저장된 세션을 선택하고 열기 단추를 클릭합니다.

 

 

 

Vncviewer 사용 연결

SSH 터널이 생성되었으므로 이제 Vncviewer를 열고 localhost:5901에서 VNC Server에 연결해야 합니다.

Google Chrome에는 TigerVNC, TightVNC, RealVNC, UltraVNC, Vinagre 및 VNC Viewer와 같은 VNC 뷰어를 사용할 수 있습니다.

TigerVNC를 사용하겠습니다. 뷰어를 열고 localhost:5901을 입력한 다음 Connect(연결) 버튼을 클릭합니다.

 

Ubuntu 18.04 : VNC 설치 및 구성하는 방법, 예제, 명령어 3

 

 

메시지가 표시되면 사용자 암호를 입력하면 기본 Xfce 데스크톱이 표시됩니다. 다음과 같이 보일 것입니다.

 

Ubuntu 18.04 : VNC 설치 및 구성하는 방법, 예제, 명령어 4

 

 

키보드와 마우스를 사용하여 로컬 컴퓨터에서 원격 XFCE 데스크톱과 상호 작용할 수 있습니다.

 

 

 

정리

이제 VNC 서버를 가동하고 실행해야 하며 사용하기 쉬운 그래픽 인터페이스를 사용하여 로컬 데스크톱 시스템에서 Ubuntu 18.04 서버를 쉽게 관리할 수 있습니다.

둘 이상의 사용자에 대해 VNC 서버가 디스플레이를 시작하도록 구성하려면 초기 구성을 생성하고 vncserver 명령을 사용하여 암호를 설정합니다. 또한 다른 포트를 사용하여 새 서비스 파일을 만들어야 합니다.

반응형