Cách cài đặt và cấu hình VNC trên Ubuntu 18.04

Tác giả Network Engineer, T.Mười 27, 2021, 10:34:21 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách cài đặt và cấu hình VNC trên Ubuntu 18.04


Máy tính mạng ảo (Virtual Network Computing) hay VNC 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 Desktop Environment đồ họa trên một máy chủ từ xa. Nó giúp việc quản lý tập tin, phần mềm và cài đặt trên máy chủ từ xa dễ dàng hơn cho những người dùng chưa thông thạo dòng lệnh.

Trong hướng dẫn này, bạn sẽ thiết lập máy chủ VNC trên máy chủ Ubuntu 18.04 và kết nối với máy chủ đó một cách an toàn thông qua đường hầm SSH. Bạn sẽ sử dụng 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 mình sẽ trơn tru và ổn định ngay cả trên các kết nối internet chậm hơn.

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

  • Một máy chủ Ubuntu 18.04 được thiết lập bằng cách làm theo hướng dẫn thiết lập máy chủ ban đầu Ubuntu 18.04, bao gồm người dùng không phải root nhưng có quyền sudo và tường lửa.
  • Máy tính cục bộ có cài đặt ứng dụng khách VNC hỗ trợ kết nối VNC qua đường hầm SSH.
  • Trên Winows, bạn có thể sử dụng TightVNC, RealVNC hoặc UltraVNC.
  • Trên macOS, bạn có thể sử dụng chương trình Screen Sharing được tích hợp sẵn hoặc có thể sử dụng ứng dụng đa nền tảng như RealVNC.
  • Trên Linux, bạn có thể chọn từ nhiều lựa chọn, bao gồm vinagre, krdc, RealVNC, hoặc TightVNC.

1. Cài đặt Desktop Environment và Máy chủ VNC.

Theo mặc định, máy chủ Ubuntu 18.04 không đi kèm với Desktop Environment đồ họa hoặc máy chủ VNC được cài đặt, vì vậy mình sẽ bắt đầu bằng cách cài đặt chúng. Cụ thể, mình sẽ cài đặt các gói cho Desktop Environment 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, hãy cập nhật danh sách các gói của bạn:

Mã nguồn [Chọn]
$ sudo apt update
Bây giờ cài đặt Desktop Environment Xfce trên máy chủ của bạn:

Mã nguồn [Chọn]
$ sudo apt install xfce4 xfce4-goodies
Sau khi quá trình cài đặt hoàn tất, hãy cài đặt máy chủ TightVNC:

Mã nguồn [Chọn]
$ sudo apt install tightvncserver
Để hoàn tất cấu hình ban đầu của máy chủ VNC sau khi cài đặt, hãy sử dụng lệnh vncserver để thiết lập mật khẩu an toàn và tạo tập tin cấu hình ban đầu:

Mã nguồn [Chọn]
$ vncserver
Bạn sẽ được nhắc nhập và xác minh mật khẩu để truy cập máy của mình từ xa:

Mã nguồn [Chọn]
You will require a password to access your desktops.
Password:
Verify:

Mật khẩu phải dài từ sáu đến tám ký tự. Mật khẩu nhiều hơn 8 ký tự sẽ tự động bị cắt bớt.

Sau khi xác minh mật khẩu, bạn sẽ có tùy chọn để tạo một 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 phiên bản 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ì đó với người khác bằng máy chủ VNC của bạn, nhưng điều này không bắt buộc.

Sau đó, quá trình tạo các tập tin cấu hình mặc định cần thiết và thông tin kết nối cho máy chủ:
Mã nguồn [Chọn]
Would you like to enter a view-only password (y/n)? n
xauth:  file /home/vietnetwork/.Xauthority does not exist

New 'X' desktop is your_hostname:1

Creating default startup script /home/vietnetwork/.vnc/xstartup
Starting applications specified in /home/vietnetwork/.vnc/xstartup
Log file is /home/vietnetwork/.vnc/your_hostname:1.log

Bây giờ hãy cấu hình máy chủ VNC.

2. Cấu hình Máy chủ VNC.

Máy chủ VNC cần biết lệnh nào sẽ thực thi khi nó khởi động. Cụ thể, VNC cần biết nó nên kết nối với máy tính đồ họa nào.

Các lệnh này nằm trong tập tin cấu hình được gọi xstartup trong thư mục .vnc dưới thư mục home 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 mình sẽ tạo tập lệnh của riêng mình để khởi chạy Xfce.

Khi VNC lần đầu tiên được thiết lập, nó khởi chạy phiên bản 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 chạy nhiều phiên bản trên các cổng hiển thị khác, chẳng hạn như :2, :3, v.v.

Vì chúng ta sẽ thay đổi cách cấu hình máy chủ VNC, trước tiên hãy dừng phiên bản máy chủ VNC đang chạy trên cổng 5901bằng lệnh sau:

Mã nguồn [Chọn]
$ vncserver -kill :1
Đầu ra sẽ giống như thế này, mặc dù bạn sẽ thấy một PID khác:

Mã nguồn [Chọn]
Killing Xtightvnc process ID 17648
Trước khi bạn sửa đổi xstartuptập tin, hãy sao lưu bản gốc:

Mã nguồn [Chọn]
$ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Bây giờ, hãy tạo một tập tin mới xstartup và mở nó trong trình soạn thảo văn bản của bạn:

Mã nguồn [Chọn]
$ nano ~/.vnc/xstartup
Các lệnh trong tập tin này được thực thi tự động bất cứ khi nào bạn khởi động hoặc khởi động lại máy chủ VNC. Mình cần VNC để khởi động Desktop Environment của mình nếu nó chưa được khởi động. Thêm các lệnh này vào tập tin:
Mã nguồn [Chọn]
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

  • xrdb $HOME/.Xresources nói cho VNC's GUI đọc tập tin người dùng .Xresources
  • .Xresources là nơi người dùng có thể thay đổi những cài đặt trong môi trường giao diện hình ảnh.

  • startxfce4 & 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.

Lưu và đóng tập tin.

Để đảm bảo rằng máy chủ VNC sẽ có thể sử dụng tập tin khởi động mới này đúng cách, mình cần làm cho nó có thể thực thi được.

Mã nguồn [Chọn]
$ sudo chmod +x ~/.vnc/xstartup
Bây giờ, khởi động lại máy chủ VNC.

Mã nguồn [Chọn]
$ vncserver
Bạn sẽ thấy đầu ra tương tự như sau:

Mã nguồn [Chọn]
New 'X' desktop is your_hostname:1

Starting applications specified in /home/vietnetwork/.vnc/xstartup
Log file is /home/vietnetwork/.vnc/your_hostname:1.log

Với cấu hình tại chỗ, hãy kết nối với máy chủ từ máy cục bộ của chúng ta.

3. Kết nối VNC Desktop một cách an toàn.

Bản thân VNC không sử dụng các giao thức an toàn khi kết nối. Chúng ta sẽ sử dụng một đường hầm SSH để kết nối an toàn với máy chủ của chúng ta và sau đó yêu cầu ứng dụng khách VNC của chúng ta sử dụng đường hầm đó thay vì tạo kết nối trực tiếp.

Tạo 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 localhostc ho VNC. Bạn có thể thực hiện việc này thông qua Terminal trên Linux hoặc macOS bằng lệnh sau:

Mã nguồn [Chọn]
$ ssh -L 5901:127.0.0.1:5901 -C -N -l vietnetwork your_server_ip
  • Tùy chọn -L chỉ định các ràng buộc cổng. Trong trường hợp này, chúng ta đang ràng buộc cổng 5901 của kết nối từ xa với cổng 5901 trên máy cục bộ của bạn.
  • Tùy chọn -C cho phép nén, trong khi tùy chọn -N cho ssh biết rằng chúng ta không muốn thực hiện một lệnh từ xa. Tùy chọn -l chỉ định tên đăng nhập từ xa.

Hãy nhớ thay thế vietnetwork và your_server_ip bằng tên người dùng không phải root sudo và địa chỉ IP của máy chủ của bạn.

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

Khi đường hầm đang chạy, hãy sử dụng ứng dụng khách VNC để kết nối localhost:5901. Bạn sẽ được nhắc xác thực bằng mật khẩu bạn đã đặt ở phần 1.

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


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


Nhấn CTRL+C vào cửa sổ dòng lệnh Terminal của bạn để dừng đường hầm SSH và quay lại dấu nhắc lệnh của bạn. Điều này cũng sẽ ngắt kết nối phiên VNC của bạn.

Tiếp theo, hãy thiết lập máy chủ VNC của mình như một dịch vụ.

4. Chạy VNC như một dịch vụ hệ thống.

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

Đầu tiên, hãy tạo một tập tin mới có tên /etc/systemd/system/[email protected] 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:

Mã nguồn [Chọn]
$ sudo nano /etc/systemd/system/[email protected]
Biểu tượng @ ở phần cuối của tên sẽ giúp chúng ta truyền các tùy chọn mà chúng ta có thể sử dụng trong cấu hình dịch vụ. Mình sẽ sử dụng nó để chỉ định cổng hiển thị VNC mà mình muốn sử dụng khi mình quản lý dịch vụ.

Thêm các dòng sau vào tập tin. Đảm bảo thay đổi giá trị của User, Group, WorkingDirectory và tên người dùng trong giá trị của PIDFILE để khớp với tên người dùng của bạn:

Mã nguồn [Chọn]
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=vietnetwork
Group=vietnetwork
WorkingDirectory=/home/vietnetwork

PIDFile=/home/vietnetwork/.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ệnh ExecStartPre dừng VNC nếu nó đang chạy. Lệnh ExecStart khởi động VNC và thiết lập độ sâu màu 24-bit màu với độ phân giải 1280x800. Bạn cũng có thể sửa đổi các tùy chọn khởi động này để đáp ứng nhu cầu của mình.
Lưu và đóng tập tin.

Tiếp theo, làm cho hệ thống nhận biết về tập tin mới.

Mã nguồn [Chọn]
$ sudo systemctl daemon-reload
Bật tập tin cấu hình mới khởi động cùng hệ thống.

Mã nguồn [Chọn]
$ sudo systemctl enable [email protected]
Dấu hiệu 1 sau @ cho biết số hiển thị mà dịch vụ sẽ xuất hiện, trong trường hợp này là giá trị mặc định :1 như đã thảo luận ở phần 2

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

Mã nguồn [Chọn]
$ vncserver -kill :1
Sau đó, khởi động nó như bạn sẽ khởi động bất kỳ dịch vụ systemd nào khác.

Mã nguồn [Chọn]
$ sudo systemctl start vncserver@1
Bạn có thể xác minh rằng nó đã khởi động bằng lệnh này:

Mã nguồn [Chọn]
$ sudo systemctl status vncserver@1
Nếu nó khởi động chính xác, đầu ra sẽ giống như sau:

Mã nguồn [Chọn]
[email protected] - Start TightVNC server at startup
  Loaded: loaded (/etc/systemd/system/[email protected]; indirect; vendor preset: enabled)
   Active: active (running) since Mon 2018-07-09 18:13:53 UTC; 2min 14s ago
  Process: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
  Process: 22316 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
 Main PID: 22330 (Xtightvnc)


Máy chủ VNC của bạn bây giờ sẽ khả dụng khi bạn khởi động lại máy.

Bắt đầu lại đường hầm SSH của bạn:

Mã nguồn [Chọn]
$ ssh -L 5901:127.0.0.1:5901 -C -N -l vietnetwork your_server_ip
Sau đó, tạo một kết nối mới bằng phần mềm máy khách VNC của bạn đến localhost:5901 để kết nối với máy của bạn.

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