Cách Cài Đặt và Cấu Hình VNC trên Ubuntu 16.04

2 năm trước

 

Giới Thiệu 

VNC, hay "Virtual Network Computing", là một hệ thống kết nối cho phép bạn sử dụng bàn phím và chuột để tương tác với môi trường máy tính để bàn đồ họa trên máy chủ từ xa. Nó làm cho việc quản lý các tập tin, phần mềm và cài đặt trên một máy chủ từ xa dễ dàng hơn cho những người dùng chưa thoải mái với dòng lệnh.

Trong hướng dẫn này, chúng ta sẽ thiết lập VNC trên một máy chủ Ubuntu 16.04 và kết nối với nó một cách an toàn thông qua một tunnel SSH. Máy chủ VNC chúng ta sẽ sử dụng là TightVNC, một gói điều khiển từ xa nhanh và nhẹ. Lựa chọn này sẽ đảm bảo rằng kết nối VNC của chúng ta sẽ ổn định và ổn định ngay cả khi kết nối internet chậm hơn.

 

Yêu Cầu 

Để hoàn thành hướng dẫn này , bạn cần:

  • Một Ubuntu 16.04 VPS được cài đặt  Thiết lập ban đầu cho server dùng Ubuntu 16.04, bao gồm một sudo non-root user. Lưu ý rằng hướng dẫn này có thể được hoàn thành bằng cách sử dụng bất kỳ kích thước VPS, nhưng một VNC được xây dựng trên một VPS nhỏ hơn có thể có nhiều giới hạn về chức năng hơn là một VPS  lớn hơn.

  • Một máy tính cục bộ với một máy khách VNC được cài đặt có hỗ trợ các kết nối VNC qua các tunnel SSH. Nếu bạn đang sử dụng Windows, bạn có thể sử dụng TightVNC, RealVNC hoặc UltraVNC. Người dùng Mac OS X có thể sử dụng chương trình Chia sẻ màn hình tích hợp hoặc có thể sử dụng ứng dụng đa nền tảng như RealVNC. Người dùng Linux có thể chọn từ nhiều tùy chọn: vinagre,krdc, RealVNC, TightVNC và hơn thế nữa.

 

Bước 1 — Cài Đặt Desktop Environment và VNC Server

Theo mặc định, một Ubuntu 16.04 VPS không đi kèm với một môi trường máy tính để bàn đồ họa hoặc một máy chủ VNC được cài đặt, vì vậy chúng ta sẽ bắt đầu bằng cách cài đặt chúng. Cụ thể, chúng ta sẽ cài đặt các gói cho môi trường máy tính để bàn Xfce mới nhất và gói TightVNC có sẵn trong kho lưu trữ chính thức của Ubuntu.

Trên máy chủ của bạn, cài đặt các gói Xfce và TightVNC.

sudo apt-get update
sudo apt install xfce4 xfce4-goodies tightvncserver
  •  

Để hoàn thành cấu hình ban đầu của máy chủ VNC sau khi cài đặt, sử dụng lệnh vncserverđể thiết lập mật khẩu an toàn.

vncserver

Bạn sẽ được nhắc nhập và xác minh mật khẩu cũng như mật khẩu chỉ xem. Người dùng đăng nhập bằng mật khẩu chỉ xem sẽ không thể điều khiển cá thể VNC bằng chuột hoặc bàn phím của họ. Đây là một tùy chọn hữu ích nếu bạn muốn chứng minh điều gì đó cho những người khác sử dụng máy chủ VNC của bạn, nhưng không cần thiết.

Chạy vncserver hoàn thành việc cài đặt VNC bằng cách tạo các tệp cấu hình mặc định và thông tin kết nối cho máy chủ của chúng ta để sử dụng. Với những gói này được cài đặt, bạn đã sẵn sàng để cấu hình máy chủ VNC của mình.

 

Bước 2— Cấu hình máy chủ VNC 

Đầu tiên, chúng ta cần thông báo cho VNC server biết các lệnh cần thực hiện khi nó khởi động. Các lệnh này được đặt trong tệp cấu hình có tên là xstartup trong thư mục.vnc dước thư mục chính của bạn.Tập lệnh khởi động đã được tạo khi bạn chạy vncserver ở bước trước, nhưng chúng ta cần sửa đổi một số lệnh cho máy tính để bàn Xfce.

Khi VNC được thiết lập lần đầu, nó sẽ khởi chạy một cá thể máy chủ mặc định trên cổng 5901. Cổng này được gọi là cổng hiển thị và được VNC gọi là:1 . VNC có thể khởi động nhiều phiên bản trên các cổng hiển thị khác, như:2,:3:, vv. Khi làm việc với các máy chủ VNC, hãy nhớ rằng :X là một cổng hiển thị có nghĩa là 5900+X.

Bởi vì chúng ta sẽ thay đổi cách máy chủ VNC được cấu hình, chúng ta cần phải dừng phiên máy chủ VNC đang chạy trên cổng 5901.

vncserver -kill :1

Đầu ra sẽ trông như thế này, với một PID khác nhau:

output
Killing Xtightvnc process ID 17648
 

Trước khi chúng ta bắt đầu cấu hình tệp xstartup mới, hãy sao lưu bản gốc.

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Bây giờ tạo một tệp xstartup mới với nano hoặc trình soạn thảo văn bản yêu thích của bạn.

nano ~/.vnc/xstartup

Dán các lệnh này vào tệp để chúng được thực hiện tự động bất cứ khi nào bạn khởi động hoặc khởi động lại máy chủ VNC, sau đó lưu và đóng tệp.

~/.vnc/xstartup#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
 

Lệnh đầu tiên trong tệp,  xrdb $HOME/.Xresources, cho khung công tác GUI của VNC đọc tệp .Xresources của người dùng máy chủ. ..Xresources là nơi người dùng có thể thực hiện thay đổi đối với một số cài đặt nhất định của màn hình đồ họa, như màu terminal, chủ đề cursor và hiển thị phông chữ. Lệnh thứ hai chỉ yêu cầu máy chủ khởi chạy Xfce, đây là nơi bạn sẽ tìm thấy tất cả phần mềm đồ họa mà bạn cần để quản lý máy chủ của mình một cách thoải mái.

Để đảm bảo rằng máy chủ VNC sẽ có thể sử dụng tệp khởi động mới này đúng cách, chúng ta sẽ cần cấp các đặc quyền thực thi cho nó.

sudo chmod +x ~/.vnc/xstartup

Bây giờ, khởi động máy chủ VNC .

vncserver

Máy chủ nên được bắt đầu với một đầu ra tương tự như thế này:

output
New 'X' desktop is your_server_name.com:1
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/liniverse.com:1.log
 
 

Bước 3 - Kiểm tra VNC Desktop

Trong bước này, chúng ta sẽ kiểm tra kết nối của máy chủ VNC .

Đầu tiên, chúng ta cần tạo một kết nối SSH trên máy tính cục bộ của bạn để chuyển tiếp an toàn tới kết nối localhostcho VNC. Bạn có thể thực hiện điều này thông qua thiết bị đầu cuối trên Linux hoặc OS X bằng lệnh sau. Hãy nhớ thay thế user và server_ip_address bằng sudo non-root usernamevà địa chỉ IP của máy chủ .

ssh -L 5901:127.0.0.1:5901 -N -f -l usernameserver_ip_address

Nếu bạn đang sử dụng một trình khách SSH đồ họa, như PuTTY, hãy sử dụng server_ip_address làm IP kết nối và đặ tlocalhost:5901  làm cổng chuyển tiếp mới trong các thiết lập tunnel SSH của chương trình.

Tiếp theo, bây giờ bạn có thể sử dụng một máy khách VNC để thử kết nối với máy chủ VNC tại localhost:5901. Bạn sẽ được nhắc xác thực. Mật khẩu chính xác để sử dụng là mật khẩu bạn đã đặt ở Bước 1.

Khi bạn đã kết nối, bạn sẽ thấy màn hình Xfce mặc định. Nó sẽ giống như thế này:

VNC connection to Ubuntu 16.04 server

Bạn có thể truy cập các tệp trong thư mục chính của mình bằng trình quản lý tệp hoặc từ dòng lệnh, như được thấy ở đây:

Files via VNC connection to Ubuntu 16.04

 

Bước 4 - Tạo một tệp dịch vụ VNC

Tiếp theo, chúng ta sẽ thiết lập máy chủ VNC như một dịch vụ systemd. Điều này sẽ khiến nó bắt đầu, dừng lại và khởi động lại khi cần thiết, giống như bất kỳ dịch vụ systemd nào khác.

Đầu tiên, tạo một tập tin đơn vị mới gọi là /etc/systemd/system/vncserver@.service bằng cách sử dụng trình soạn thảo văn bản yêu thích của bạn:

sudo nano /etc/systemd/system/vncserver@.service
  •  

Sao chép và dán nội dung sau vào đó. Hãy chắc chắn thay đổi giá trị của User  và Username trong giá trị của PIDFILE để khớp với tên người dùng của bạn.

/etc/systemd/system/vncserver@.service
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=sammyPAMName=login
PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
 

Lưu và đóng tệp.

Tiếp theo, làm cho hệ thống nhận biết được tệp đơn vị mới.

sudo systemctl daemon-reload

Kích hoạt tệp đơn vị.

sudo systemctl enable vncserver@1.service

Dấu 1 sau dấu @ biểu thị số hiển thị mà dịch vụ sẽ xuất hiện, trong trường hợp này là mặc định:1 như đã được thảo luận ở trên.

Dừng phiên bản hiện tại của máy chủ VNC nếu nó vẫn đang chạy.

vncserver -kill :1

Sau đó bắt đầu nó như bạn  bắt đầu bất kỳ dịch vụ systemd khác.

sudo systemctl start vncserver@1

Bạn có thể xác minh rằng nó đã bắt đầu bằng lệnh này:

sudo systemctl status vncserver@1

Nếu nó bắt đầu chính xác, đầu ra sẽ trông như thế này:

Output
vncserver@1.service - TightVNC server on Ubuntu 16.04
Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-04-25 03:21:34 EDT; 6s ago
Process: 2924 ExecStop=/usr/bin/vncserver -kill :%i (code=exited, status=0/SUCCESS)
...
systemd[1]: Starting TightVNC server on Ubuntu 16.04...
systemd[2938]: pam_unix(login:session): session opened for user finid by (uid=0)
systemd[2949]: pam_unix(login:session): session opened for user finid by (uid=0)
systemd[1]: Started TightVNC server on Ubuntu 16.04.
 

Kết Luận

Bây giờ bạn sẽ có một máy chủ VNC bảo mật và chạy trên máy chủ Ubuntu 16.04 của bạn. Bây giờ bạn sẽ có thể quản lý các tệp, phần mềm và cài đặt của mình bằng giao diện đồ họa dễ sử dụng và quen thuộc.

Tìm hiểu thêm những điều thú vị  tại ViCloud Community