SW/리눅스

Linux : Ubuntu 20.04 : VNC 설치, 구성 방법, 예제, 명령어

얇은생각 2023. 1. 21. 07:30
반응형

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

Ubuntu 20.04에 VNC 서버를 설치하고 구성하는 방법을 설명합니다. 또한 SSH 터널을 통해 VNC 서버에 안전하게 연결하는 방법도 보여줍니다.

 

 

데스크톱 환경을 설치

Ubuntu 서버는 명령줄에서 관리되며 기본적으로 데스크톱 환경이 설치되어 있지 않습니다. 데스크톱 버전의 Ubuntu를 실행하는 경우 이 단계를 건너뜁니다. 

Ubuntu 저장소에는 다양한 데스크톱 환경을 사용할 수 있습니다. 한 가지 옵션은 Ubuntu 20.04의 기본 데스크톱 환경인 Gnome을 설치하는 것입니다. 또 다른 옵션은 Xfce를 설치하는 것입니다. 빠르고 안정적이며 가벼운 데스크톱 환경으로 원격 서버에서 사용하기에 이상적입니다.

이 가이드에서는 Xfce를 설치합니다. sudo 권한을 가진 사용자로 다음 명령을 입력합니다.

sudo apt update
sudo apt install xfce4 xfce4-goodies

 

 

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

 

 

 

VNC 서버를 설치

Ubuntu 저장소에는 Tight VNC, Tiger VNC 및 x11 vnc와 같은 여러 VNC 서버를 사용할 수 있습니다. 각 VNC 서버는 속도와 보안 측면에서 서로 다른 강점과 약점을 가지고 있습니다.

Tiger VNC를 설치하겠습니다. 현재 유지 관리되고 있는 고성능 VNC 서버입니다. 다음 명령을 입력하여 패키지를 설치하십시오.

sudo apt install tigervnc-standalone-server

 

 

 

VNC 액세스를 구성

VNC 서버가 설치되면 다음 단계는 초기 사용자 구성을 생성하고 암호를 설정하는 것입니다.

vncpasswd 명령을 사용하여 사용자 암호를 설정합니다. 아래 명령을 실행할 때 sudo를 사용하지 마십시오.

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

vncpasswd

# Password:
# Verify:
# Would you like to enter a view-only password (y/n)? n

 

 

암호 파일은 ~/.vnc 디렉터리에 저장되며, 디렉터리가 없으면 생성됩니다.

다음으로 Xfce를 사용하도록 Tiger VNC를 구성해야 합니다. 이렇게 하려면 다음 파일을 생성하십시오.

# ~/.vnc/xstartup

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

 

 

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

~/.vnc/x 시작 파일에도 실행 권한이 있어야 합니다. chmod 명령을 사용하여 파일 권한을 설정합니다.

chmod u+x ~/.vnc/xstartup

 

 

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

# ~/.vnc/config

geometry=1920x1080
dpi=96

 

 

이제 vncserver 명령을 사용하여 VNC 서버를 시작할 수 있습니다.

vncserver

# New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com
# 
# Starting applications specified in /home/linuxize/.vnc/xstartup
# Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log
# 
# Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/linuxize/.vnc/passwd :1 to

 

 

위의 출력에서 호스트 이름 뒤에 :1을 기록합니다. vnc 서버가 실행 중인 표시 포트의 수를 나타냅니다. 이 예에서는 서버가 TCP 포트 5901(5900+1)에서 실행되고 있습니다. vncserver를 사용하여 두 번째 인스턴스를 만들면 다음 사용 가능한 포트(예:2)에서 실행됩니다. 즉, 서버가 포트 5902(5900+2)에서 실행되고 있습니다.

VNC 서버로 작업할 때 :X는 5900+X를 가리키는 표시 포트입니다.

다음을 입력하여 현재 실행 중인 모든 VNC 세션 목록을 가져올 수 있습니다.

vncserver -list

# TigerVNC server sessions:
# 
# X DISPLAY #	RFB PORT #	PROCESS ID
# :1		      5901		    5710

 

 

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

vncserver -kill :1

# Killing Xtigervnc process ID 5710... success!

 

 

 

Systemd 단위 파일 생성

VNC 세션을 수동으로 시작하는 대신 필요에 따라 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

 

 

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

systemd에 새 장치 파일이 생성되었음을 알립니다.

sudo systemctl daemon-reload

 

 

부팅 시 서비스를 시작할 수 있도록 설정합니다.

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; enabled; vendor preset: enabled)
#      Active: active (running) since Fri 2021-03-26 20:00:59 UTC; 3s ago
# ...

 

 

 

VNC 서버에 연결

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

 

 

 

Linux 및 macOS에서 SSH 터널링을 설정

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

ssh -L 5901:127.0.0.1:5901 -N -f -l vagrant 192.168.33.10

 

 

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

사용자 이름과 server_ip_address를 사용자 이름과 서버의 IP 주소로 바꾸어야 합니다.

 

 

 

윈도우즈에서 SSH 터널링을 설정

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

Putty를 열고 호스트 이름 또는 IP 주소 필드에 서버 IP 주소를 입력합니다.

Linux : Ubuntu 20.04 : VNC 설치, 구성 방법, 예제, 명령어 1

 

 

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

Linux : Ubuntu 20.04 : VNC 설치, 구성 방법, 예제, 명령어 2

 

 

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

 

 

 

Vncviewer를 사용하여 연결

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

Google Chrome용 Tiger VNC, Tight VNC, Real VNC, Ultra VNC, Vinagre 및 VNC Viewer와 같은 모든 VNC 뷰어를 사용할 수 있습니다.

Tiger VNC를 쓰겠습니다. 뷰어를 열고 localhost:5901을 입력한 후 Connect 버튼을 클릭합니다.

Linux : Ubuntu 20.04 : VNC 설치, 구성 방법, 예제, 명령어 3

 

 

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

Linux : Ubuntu 20.04 : VNC 설치, 구성 방법, 예제, 명령어 4

 

 

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

지금까지 Ubuntu 20.04에서 VNC 서버를 설치하고 실행하는 방법을 보여드렸습니다.

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

반응형