Thứ năm, 07/05/2020 | 00:00 GMT+7

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

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 môi trường máy tính để bàn (có giao diện đồ họa) tới một server từ xa. Nó giúp việc quản lý file, phần mềm và cài đặt trên server từ xa dễ dàng hơn cho những user chưa thông thạo dòng lệnh, hoặc hữu ích trong một số trường hợp cần thiết.

Trong hướng dẫn này, bạn sẽ thiết lập server VNC trên server Ubuntu 18.04 và kết nối với nó một cách an toàn thông qua tunnel 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 kết nối VNC sẽ trơn tru và ổn định ngay cả với 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 server Ubuntu 18.04 được thiết lập theo hướng dẫn thiết lập server ban đầu Ubuntu 18.04 , bao gồm user không phải root có quyền sudo và firewall.
  • Máy tính local có cài đặt ứng dụng client VNC hỗ trợ kết nối VNC qua tunnel 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 Chia sẻ màn hình đượ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 tùy chọn, bao gồm vinagre , krdc , RealVNC hoặc TightVNC .

Bước 1 - Cài đặt Môi trường Máy tính để bàn và Server VNC

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 repository chính thức của Ubuntu.

Trên server , hãy cập nhật danh sách các gói :

  • sudo apt update

Bây giờ cài đặt môi trường máy tính để bàn Xfce trên server :

  • sudo apt install xfce4 xfce4-goodies

Khi cài đặt hoàn tất, hãy cài đặt server TightVNC:

  • sudo apt install tightvncserver

Để hoàn tất cấu hình ban đầu của server VNC sau khi cài đặt, hãy sử dụng lệnh vncserver để thiết lập password an toàn và tạo file cấu hình ban đầu:

  • vncserver

Bạn cần nhập và xác minh password để truy cập vào máy từ xa:

Output
You will require a password to access your desktops.  Password: Verify: 

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

Sau khi xác minh password, bạn sẽ có tùy chọn để tạo một password chỉ xem. User đăng nhập bằng password chỉ xem sẽ không thể điều khiển version VNC bằng chuột hoặc bàn phím của họ. Đây là một tùy chọn không bắt buộc.

Quá trình này sẽ tạo các file cấu hình mặc định cần thiết và thông tin kết nối cho server:

Output
Would you like to enter a view-only password (y/n)? n xauth:  file /home/sammy/.Xauthority does not exist  New 'X' desktop is your_hostname:1  Creating default startup script /home/sammy/.vnc/xstartup Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log 

Bây giờ hãy cấu hình server VNC.

Bước 2 - Cấu hình Server VNC

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

Các lệnh này nằm trong file cấu hình có tên xstartup trong folder .vnc. Tập lệnh khởi động được tạo khi bạn chạy vncserver ở bước trước, nhưng ta sẽ tạo tập lệnh riêng để chạy máy tính để bàn Xfce.

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

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

  • vncserver -kill :1

Kết quả giống như sau, có thể bạn sẽ thấy một PID khác:

Output
Killing Xtightvnc process ID 17648 

Trước khi bạn sửa đổi file xstartup , hãy sao lưu bản root:

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

Bây giờ, hãy tạo một file xstartup mới và mở nó trong editor :

  • nano ~/.vnc/xstartup

Các lệnh trong file này được thực thi tự động khi nào bạn khởi động server VNC. Ta cần VNC để khởi động môi trường máy tính để bàn nếu nó chưa bắt đầu. Thêm các lệnh này vào file:

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

Lệnh đầu tiên trong file, xrdb $HOME/.Xresources, cho khung GUI của VNC đọc file .Xresources của user server. .Xresources là nơi user có thể thực hiện các thay đổi đối với các cài đặt nhất định của màn hình đồ họa, như màu terminal, con trỏ và hiển thị phông chữ. Lệnh thứ hai yêu cầu server 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ý server một cách tiện lợi.

Đảm bảo server VNC có thể sử dụng file khởi động mới này đúng cách, ta cần làm cho nó có thể thực thi được.

  • sudo chmod +x ~/.vnc/xstartup

Bây giờ, khởi động lại server VNC.

  • vncserver

Bạn sẽ thấy kết quả tương tự như sau:

Output
New 'X' desktop is your_hostname:1  Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log 

Với cấu hình tại chỗ, hãy kết nối với server từ máy local .

Bước 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. Ta sẽ sử dụng một tunnel SSH để kết nối an toàn với server và sau đó yêu cầu ứng dụng client VNC sử dụng tunnel đó 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 local để chuyển tiếp an toàn tới kết nối server localhost cho 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:

  • ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

Lựa chọn -L chỉ định các cổng kết nối. Trong trường hợp này, ta kết nối từ xa với cổng 5901 trên máy local. Lựa chọn -C cho phép nén dữ liệu, trong khi lựa chọn -N nói với ssh rằng ta không muốn thực hiện lệnh từ xa. Lựa chọn -l chỉ định tên đăng nhập từ xa.

Hãy nhớ thay thế sammyyour_server_ip bằng tên user không phải root có quyền sudo và địa chỉ IP của server .

Nếu bạn đang sử dụng client 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 tunnel SSH của chương trình.

Khi tunnel đang chạy, hãy sử dụng client VNC để kết nối với localhost:5901 . Bạn cần xác thực bằng password bạn đã đặt ở Bước 1.

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

Kết nối VNC với server Ubuntu 18.04

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

File qua kết nối VNC với Ubuntu 18.04

Nhấn CTRL+C trong terminal để dừng tunnel SSH và quay lại dấu nhắc . Điều này cũng sẽ ngắt kết nối phiên VNC .

Tiếp theo, hãy thiết lập server VNC như một dịch vụ.

Bước 4 - Chạy VNC như một Dịch vụ Hệ thống

Tiếp theo, ta sẽ thiết lập server VNC như một dịch vụ systemd để ta 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 VNC khởi động khi server khởi động lại.

Đầu tiên, hãy tạo một unit file mới có tên /etc/systemd/system/vncserver@.service bằng editor :

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

Ký hiệu @ ở cuối tên sẽ cho phép ta chuyển vào một đối số mà ta có thể sử dụng trong cấu hình dịch vụ. Ta sẽ sử dụng nó để chỉ định cổng hiển thị VNC mà ta muốn sử dụng khi quản lý dịch vụ.

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

/etc/systemd/system/vncserver@.service
[Unit] Description=Start TightVNC server at startup After=syslog.target network.target  [Service] Type=forking User=sammy Group=sammy WorkingDirectory=/home/sammy  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ệnh ExecStartPre dừng VNC nếu nó đang chạy. Lệnh ExecStart khởi động VNC và đặt độ sâu màu thành màu 24-bit 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 .

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

Tiếp theo, làm cho hệ thống biết unit file mới.

  • sudo systemctl daemon-reload

Bật unit file.

  • sudo systemctl enable vncserver@1.service

Số 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ư đã thảo luận ở Bước 2..

Dừng version hiện tại của server VNC nếu nó vẫn đang chạy.

  • vncserver -kill :1

Sau đó, khởi động nó như khởi động dịch vụ khác.

  • sudo systemctl start vncserver@1

Bạn có thể kiểm tra nó đã chạy bằng lệnh này:

  • sudo systemctl status vncserver@1

Nếu nó bắt đầu đúng, kết quả trông như sau:

Output
● vncserver@1.service - Start TightVNC server at startup    Loaded: loaded (/etc/systemd/system/vncserver@.service; 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)  ... 

Server VNC bây giờ sẽ tự chạy khi bạn khởi động lại máy.

Bắt đầu lại tunnel SSH :

  • ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

Sau đó, tạo một kết nối mới bằng phần mềm client VNC tới localhost:5901 để kết nối với máy .

Kết luận

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


Tags:

Các tin trước

Cài đặt Java với Apt trên Ubuntu 20.04 2020-05-07
Cài đặt Java bằng apt trên Ubuntu 18.04 2020-05-07
Cài đặt Nginx trên Ubuntu 18.04 2020-05-06
Cài đặt và bảo mật phpMyAdmin trên Ubuntu 20.04 2020-05-04
Cài đặt và bảo mật Redis trên Ubuntu 18.04 2020-04-30
Bảo mật apache với let-s-encrypt trên Ubuntu 20.04 2020-04-29
Cài đặt Linux Apache MySQL PHP (LAMP) trên Ubuntu 20 04 2020-04-29
Cài đặt LEMP Linux Nginx MySQL PHP (LEMP ) trên Ubuntu 20 04 2020-04-29
Cài đặt Apache Web Server trên Ubuntu 20.04 2020-04-27
Cài đặt Nginx trên Ubuntu 20.04 2020-04-24