Virtual Network Computing (VNC)는 그래픽 사용자 인터페이스에 원격으로 액세스하는 데 사용되는 화면 공유 시스템입니다. 이는 하나의 서버(사용자 측)가 다른 측(클라이언트)과 연결할 수 있도록 하는 원격 프레임 버퍼 프로토콜을 사용합니다. VNC는 안전하고 보안성이 뛰어나며 모든 운영 체제에서 작동합니다.
RealVNC, UltraVNC, Xfce, TightVNC 등은 오늘날 가장 인기 있는 VNC 클라이언트입니다. 선택할 수 있는 대안 목록 중에서 편리하게 원하는 VNC를 자유롭게 선택할 수 있습니다. 이 튜토리얼에서는 Ubuntu 20.04에 VNC를 설치하고 구성하는 단계를 안내합니다. 우리는 Xfce를 설치할 예정인데, 이는 속도가 빠르고 가벼우며 성능이 뛰어나기 때문입니다.
먼저 Ubuntu 서버에 VNC 서버를 설정하고 SSH 터널을 통해 안전한 연결을 구축하는 것부터 시작합니다. 마지막으로, 로컬 머신에서 VNC 클라이언트 프로그램을 사용하여 그래픽 데스크톱 환경을 통해 서버와 상호 작용할 것입니다.
전제 조건
이 튜토리얼을 따르려면 다음이 필요합니다:
-
루트(root)가 아닌 사용자와 Ubuntu 20.04 서버 및 간단한 방화벽(UFW).
-
VNC 클라이언트가 설치된 로컬 컴퓨터. 또한, 우리가 사용할 VNC 클라이언트는 SSH를 통해 연결됩니다.
1단계 — 데스크톱 환경 및 VNC 서버 설치
이전 Ubuntu 버전과 달리 Ubuntu 20.04에는 VNC가 사전 설치되어 제공되지 않습니다. 첫 번째 단계로 공식 Ubuntu 저장소에서 필요한 패키지를 설치하겠습니다. 계속 진행하기 전에 기존 패키지를 업데이트해 보겠습니다.
|
1 |
sudo apt update |
이제 다음 명령을 사용하여 Xfce 및 xfce4-goodies 패키지를 설치합니다:
|
1 |
sudo apt install xfce4 xfce4-goodies |
패키지가 설치되는 동안 Xfce의 기본 디스플레이 관리자를 선택하라는 화면이 표시됩니다. 메시지를 무시하거나 기본값으로 설정한 다음, ENTER.
디스플레이 관리자는 사용자가 그래픽 인터페이스를 통해 데스크톱 환경에 로그인할 수 있도록 하는 프로그램입니다. 이 튜토리얼에서는 루트가 아닌 Ubuntu 사용자로 로그인한 VNC 클라이언트로 연결할 때 Xfce를 사용합니다. 따라서 디스플레이 관리자 선택은 설치에 아무런 영향을 미치지 않습니다.
Xfce 설치 후 TightVNC 서버를 설치하겠습니다:
|
1 |
sudo apt install tightvncserver |
다음 단계에서는 vncserver 명령을 사용하여 VNC 액세스 비밀번호를 설정하고 초기 구성 파일을 생성합니다. VNC 서버 인스턴스를 시작하려면 다음을 입력하십시오:
|
1 |
vncserver |
그 후, 6~8자 길이의 비밀번호를 설정하고 ENTER를 누르십시오. 다음과 같은 프롬프트 메시지가 표시됩니다:
|
1 2 3 4 5 |
출력 You will require a password to access your desktops. Password: Verify: |
향후 비밀번호를 변경하거나 보기 전용 비밀번호를 추가하려면 다음 명령을 사용하십시오:
|
1 |
vncpasswd |
이제 서버에 대한 모든 기본 구성이 생성되고, 디스플레이 포트 5901가 로 실행됩니다.:1. VNC는 다음과 같은 다른 디스플레이 포트에서 여러 인스턴스를 실행할 수 있습니다. :2, :3, 및 :4은 각각 포트 5902, 5903, 및 5904를 나타냅니다:
|
1 2 3 4 5 6 7 8 9 |
출력 Would you like to enter a view-only password (y/n)? n xauth: file /home/cloudsigma/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/cloudsigma/.vnc/xstartup Starting applications specified in /home/cloudsigma/.vnc/xstartup Log file is /home/cloudsigma/.vnc/your_hostname:1.log |
이제 VNC 서버가 성공적으로 설치되어 실행 중입니다. 다음 단계에서는 그래픽 인터페이스를 통해 액세스할 수 있도록 Xfce를 실행하도록 서버를 구성해 보겠습니다.
단계 2— VNC 서버 구성
홈 디렉터리 아래에서 다음을 찾을 수 있습니다. .vnc 폴더에는 다음과 같은 모든 구성 파일이 포함되어 있습니다. startup. 처음에는 명령어를 실행했을 때 자동으로 생성되어 실행 중인 startup 파일을 찾을 수 있습니다.vncserver (단계 Step-1에서). startup 스크립트는 이전 단계에서 vncserver 명령어를 실행했을 때 생성되었습니다. 하지만 이제 Xfce 데스크톱을 실행하기 위해 고유한 스크립트를 생성할 것입니다. VNC 구성이 변경되므로 Xfce 데스크톱을 실행하기 위한 자체 서버도 생성해야 합니다.
더 진행하기 전에, 포트 에서 실행 중인 VNC 서버 인스턴스를 중지해야 합니다.5901:
|
1 |
vncserver -kill :1 |
다음과 같은 출력이 표시됩니다:
|
1 2 |
출력 Killing Xtightvnc process ID 17648 nano ~/.vnc/xstartup |
대신 17648 대신 다른 숫자가 표시될 수 있으며, 이는 괜찮습니다. 다음으로, xstartup 파일을 수정하기 전에 원본 파일을 백업해 두겠습니다:
|
1 |
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak |
다음으로, 새 xstartup 파일을 생성하고 텍스트 편집기에서 엽니다. 이 튜토리얼에서는 를 사용합니다.nano:
|
1 |
nano ~/.vnc/xstartup |
완료되면 파일에 다음 줄을 추가합니다:
|
1 2 3 |
#!/bin/bash xrdb $HOME/.Xresources startxfce4 & |
VNC 서버를 시작하거나 재시작할 때마다 이 명령들이 자동으로 실행됩니다. 첫 번째 줄은 쉬뱅(Shebang)으로, 시스템에 실행할 ~/.vnc/xstartup 파일을 전달할 인터프리터 정보를 알려줍니다. 다음 줄인 xrdb $HOME/. Xresources은 VNC의 GUI 프레임워크에 서버 사용자의 Xresources 파일을 읽도록 지시합니다. 마지막으로, 마지막 줄은 서버에 Xfce를 실행하도록 요청합니다. 이 줄들을 추가한 후 파일을 저장하고 닫습니다.
VNC 서버가 새 startup 파일을 사용할 수 있도록 파일에 실행 권한을 부여해야 합니다:
|
1 |
chmod +x ~/.vnc/xstartup |
다음으로, VNC 서버를 재시작합니다:
|
1 |
vncserver -localhost |
이제 여기에 -localhost 옵션이 추가됩니다. localhost는 VNC 서버를 서버의 루프백 인터페이스에 바인딩하여 설치된 서버에서만 연결할 수 있도록 허용합니다. 다음으로, 로컬 머신과 서버 사이에 SSH 터널을 구축하겠습니다. 목적은 VNC 주변에 추가적인 보안 계층을 추가하는 것입니다. 왜일까요? 액세스 권한을 가질 사용자는 이미 서버에 대한 SSH 액세스 권한을 가진 사용자이기 때문입니다.
다음과 같은 출력이 표시됩니다:
|
1 2 3 4 |
New 'X' desktop is your_hostname:1 Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/cloudsigma/.vnc/your_hostname:1.log |
구성이 완료되면 로컬 머신에서 VNC 서버에 연결할 준비가 된 것입니다.
단계 3— VNC 데스크톱에 안전하게 연결
서버에 연결할 때 VNC는 보안 프로토콜을 사용하지 않습니다. 따라서 SSH 터널을 구축하고 VNC 클라이언트가 직접 연결하도록 허용하는 대신 터널을 사용하여 연결하도록 요청해야 합니다.
로컬 컴퓨터에서 ssh 명령어를 사용하여 localhost 연결로 전달되는 SSH 연결을 생성합니다. 터미널에서 다음 명령어를 사용하여 SSH 연결을 생성합니다:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
위 코드를 해독해 보겠습니다:
-
-L 59000:localhost:5901: -L 스위치는 로컬 컴퓨터의 지정된 포트( 59000)가 대상 서버의 지정된 호스트 및 포트( localhost:5901)로 이동하도록 지정합니다. 즉, 포트 5901 대상 서버에서 다음과 같이 정의됩니다. your_server_ip). 지정하는 로컬 포트는 임의적입니다. 해당 포트가 이미 다른 서비스에 바인딩되어 있지 않은 한, 터널의 포워딩 포트로 자유롭게 사용할 수 있습니다.
-
-C: 리소스 소비를 최소화하고 성능을 가속화하는 데 도움이 되는 압축을 활성화합니다.
-
-N: 포트 포워딩에 유용합니다. 이는 다음에 알립니다. ssh가 원격 명령을 실행하지 않도록 합니다.
-
-l cloudsigma your_server_ip: -l 스위치를 사용하면 서버에 연결한 후 로그인할 사용자를 지정할 수 있습니다.
위의 명령은 단순히 서버의 방화벽을 열어 포트 연결을 허용하는 것보다 안전한 연결을 설정하는 더 안전한 방법입니다. 5901 어디서나 가능합니다. 연결이 완료되면 SSH 터널은 포트의 콘텐츠를 전달합니다. 5901 VNC에서 포트로 59000 기본 SSH 포트를 통해 로컬 머신에서; 포트 22.
또한 다음을 사용할 수 있습니다: PuTTY를 사용하여 서버에 연결합니다. PuTTY를 열고 PuTTY 터미널의 왼쪽으로 이동하여 다음을 찾으십시오. Connection 분기를 선택하여 연결합니다. 그런 다음, 다음을 확장하십시오. SSH 분기를 확장하고 다음을 클릭하십시오. Tunnels. 다음 화면에서 Options controlling SSH port forwarding 화면, 다음을 입력하십시오. 59000을(를) 다음으로 입력하십시오. Source Port 및 localhost:5901을(를) 다음으로 입력하십시오. Destination:

모든 옵션을 변경하지 않은 채로 두고, 다음을 클릭하십시오. Add, 그런 다음 Apply을 클릭하여 터널을 적용합니다. 터널이 시작되면 VNC 클라이언트를 사용하여 다음에 연결하십시오. localhost: 59000. 기본적으로 다음에서 생성한 비밀번호를 사용하여 인증하라는 메시지가 표시됩니다. Step-1. 연결되면 기본 Xfce 데스크톱이 표시됩니다:

홈 디렉토리의 파일에 액세스하고 관리할 수 있습니다. 또한 VNC 서버가 다음과 같이 실행되도록 구성하십시오. systemd service.
4단계— VNC를 Systemd 서비스로 실행
VNC 서버를 systemd 서비스로 실행하도록 설정하면 서버 관리가 가능해집니다. 편의와 필요에 따라 시작, 중지, 재시작 또는 종료할 수 있습니다. 서버가 부팅될 때마다 systemd 관리 명령을 사용하여 서버가 다음과 같은 상태인지 확인할 수 있습니다. ON 또는 OFF.
먼저, 서비스를 관리할 때 사용할 VNC 디스플레이 포트를 지정하기 위해 새 유닛 파일을 생성합니다. 유닛 파일을 정의합니다:
|
1 |
sudo nano /etc/systemd/system/vncserver@.service |
파일 이름 끝에 다음 기호가 있는 것을 볼 수 있습니다. @ 이 기호는 서비스 구성을 사용하기 위한 인수를 전달할 수 있도록 합니다.
다음으로, 유닛 파일에 다음 줄들을 추가합니다. 다음 값에서 User, Group, WorkingDirectory, 및 사용자 이름을 변경하십시오. PIDFILE:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unit] Description=Start TightVNC server at startup After=syslog.target network.target [Service] Type=forking User=cloudsigma Group=cloudsigma WorkingDirectory=/home/cloudsigma PIDFile=/home/cloudsigma/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target |
VNC가 이미 실행 중인 경우, ExecStartPre 명령이 이를 중지합니다. ExecStart 명령은 VNC를 시작하고 색상 깊이를 24비트 색상, 해상도를 1280×800으로 설정합니다. 요구 사항에 따라 이러한 시작 옵션을 편집할 수 있습니다. 또한, ExecStart 명령에 다시 -localhost 옵션이 포함되어 있음에 유의하십시오. 완료되면 유닛 파일을 저장하고 닫습니다.
다음으로, 시스템에 새 유닛 파일을 도입합니다:
|
1 |
sudo sudo systemctl daemon-reload |
유닛 파일을 ON 상태로 전환합니다:
|
1 |
sudo systemctl enable vncserver@1.service |
다음 1 뒤에 오는 @ 기호는 서비스가 표시되어야 할 디스플레이 번호를 나타냅니다. 우리의 경우, 이는 기본값인 :1 (앞서 Step-2에서 논의한 바와 같습니다). VNC가 여전히 실행 중인 경우, 다음을 사용하여 VNC 서버의 현재 인스턴스를 중지할 수 있습니다. kill 명령:
|
1 |
vncserver -kill :1 |
그런 다음 다른 systemd 서비스와 마찬가지로 시작합니다:
|
1 |
sudo systemctl start vncserver@1 |
다음 명령으로 시작되었는지 확인할 수 있습니다:
|
1 |
sudo systemctl status vncserver@1 |
다음과 같은 출력이 표시됩니다:
|
1 2 3 4 5 6 7 8 |
출력 vncserver@1.서비스 - 시작 TightVNC 서버 at 시작 시 로드됨: 로드됨 (/etc/systemd/system/vncserver@.서비스; 활성화됨; 공급업체 사전 설정: 활성화됨) 활성: 활성 (실행 중) 이후 목 2020-05-07 17:23:50 UTC; 6초 전 프로세스: 39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) 프로세스: 39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) 메인 PID: 39795 (Xtightvnc) ... |
이제 서버가 부팅될 때마다 VNC 서버를 사용할 준비가 되었으며, 다른 systemd 서비스와 마찬가지로 systemctl 명령어로 관리할 수 있습니다. 하지만 클라이언트 측에서는 아무런 차이를 느끼지 못할 것입니다. 다시 연결하려면, 다음을 사용하여 SSH 터널을 시작하십시오:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
VNC 클라이언트를 사용하여 서버의 localhost:59000에 다시 연결할 수 있습니다.
결론
처음에는 VNC 서버를 설정하는 것이 어려워 보일 수 있으며, 특히 새로운 컴퓨터에 연결하려고 할 때 더욱 그렇습니다. 일단 안정적인 연결을 설정하고 나면 원격 컴퓨터로 작업하는 것이 재미있고 흥미로울 것입니다. Ubuntu 20.04 서버에서 안전한 VNC 서버를 실행하면 사용자 친화적인 그래픽 인터페이스를 통해 리소스, 파일, 소프트웨어 및 설정을 쉽게 관리할 수 있습니다. 과도한 대역폭 사용은 VNC 사용의 단점 중 하나일 수 있습니다. 더 빠른 전송을 위해 저해상도 및 그레이스케일 화면을 사용하여 이를 극복할 수 있습니다.
즐거운 컴퓨팅 되세요!
댓글
아직 댓글이 없습니다. 첫 번째로 작성해 보세요.