Cách cài đặt và cấu hình VNC trên Ubuntu 20.04 [Quickstart]
Máy tính mạng ảo , 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 đồ họa trên 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.Trong hướng dẫn bắt đầu nhanh này, bạn sẽ cài đặt server VNC với TightVNC trên server Ubuntu 20.04 và kết nối với nó một cách an toàn thông qua tunnel SSH. Sau đó, bạn sẽ sử dụng client VNC trên máy local của bạn để tương tác với server của bạn thông qua môi trường máy tính để bàn (có giao diện đồ họa) .
Yêu cầu
Để hoàn thành hướng dẫn này, bạn cần :
- Một server Ubuntu 20.04 với admin-user không phải root và firewall được cấu hình bằng UFW. Để cài đặt điều này, hãy làm theo hướng dẫn cài đặt server ban đầu của ta cho Ubuntu 20.04 .
- Một máy tính local có cài đặt ứng dụng client VNC. Máy khách VNC bạn sử dụng phải hỗ trợ kết nối qua tunnel SSH:
Bước 1 - Cài đặt Môi trường Máy tính để bàn và Server VNC
Sau khi kết nối với server của bạn bằng SSH, hãy cập nhật danh sách các gói của bạn:
- sudo apt update 
Sau đó, cài đặt Xfce cùng với gói xfce4-goodies , chứa một vài cải tiến cho môi trường máy tính để bàn:
- sudo apt install xfce4 xfce4-goodies 
Khi cài đặt xong , hãy cài đặt server TightVNC:
- sudo apt install tightvncserver 
Tiếp theo, chạy lệnh vncpasswd để đặt password  truy cập VNC và tạo các file  cấu hình ban đầu:
- vncpasswd 
Bạn sẽ được yêu cầu nhập và xác minh password để truy cập vào máy của bạn từ xa:
OutputYou 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ự; 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 password chỉ xem, nhưng điều này không bắt buộc.
 Nếu bạn muốn thay đổi password   của bạn  hoặc thêm password  chỉ xem, hãy chạy lại lệnh vncpasswd .
Bước 2 - Cấu hình Server VNC
 Các lệnh mà  server  VNC chạy khi khởi động nằm trong file  cấu hình có tên xstartup trong folder  .vnc folder  chính của bạn. Trong bước này,  ta  sẽ tạo một tập lệnh xstartup tùy chỉnh sẽ thông báo cho  server  VNC kết nối với máy tính để bàn Xfce.
 Tạo một file  xstartup mới và mở nó trong một editor , chẳng hạn như nano :
- nano ~/.vnc/xstartup 
Thêm các dòng sau vào file mới:
#!/bin/bash xrdb $HOME/.Xresources startxfce4 & Sau shebang , lệnh đầu tiên trong file , xrdb $HOME/.Xresources , yêu cầu khung GUI của VNC đọc file  .Xresources của  user   server . Lệnh thứ hai yêu cầu  server   chạy  Xfce.
  Lưu file   sau khi thêm các dòng này. Nếu bạn sử dụng nano , hãy làm như vậy bằng cách nhấn CTRL + X , Y , sau đó ENTER .
Sau đó, làm cho file thực thi được:
- chmod +x ~/.vnc/xstartup 
Và khởi động  server  VNC bằng lệnh vncserver :
- vncserver -localhost 
Lệnh này bao gồm tùy chọn -localhost , liên kết  server  VNC với giao diện loopback của  server  của bạn. Điều này sẽ khiến VNC chỉ cho phép các kết nối bắt nguồn từ  server  mà nó được cài đặt.
Bạn sẽ thấy kết quả tương tự như sau:
OutputNew 'X' desktop is your_hostname:1  Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log Tại đây, bạn có thể thấy rằng lệnh  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 :
Bước 3 - Kết nối an toàn với VNC Desktop
Để kết nối an toàn với server của bạn, bạn sẽ cài đặt một tunnel SSH và sau đó yêu cầu ứng dụng client VNC của bạn kết nối bằ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  của bạn để chuyển tiếp an toàn đến kết nối 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 ssh sau:
- ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip 
Cổng local  có thể là bất kỳ cổng nào chưa bị chặn bởi chương trình hoặc quy trình khác, mặc dù  ta  sử dụng 59000 trong ví dụ này. Ngoài ra, hãy đảm bảo thay đổi sammy thành tên  user  Ubuntu của bạn và your_server_ip để phản ánh địa chỉ IP  server  của bạn.
Nếu bạn đang sử dụng PuTTY để kết nối với server của bạn , bạn có thể tạo tunnel SSH bằng cách nhấp chuột phải vào thanh trên cùng của cửa sổ terminal , sau đó nhấp vào tùy chọn Thay đổi Cài đặt… :
 Tìm nhánh Kết nối trong menu cây ở phía bên trái của cửa sổ Cấu hình lại PuTTY. Mở rộng nhánh SSH và nhấp vào Đường hầm . Trên màn hình Tùy chọn điều khiển chuyển tiếp cổng SSH , nhập 59000 làm Cổng nguồn và localhost:5901 làm Đích , như sau: 
Sau đó nhấp vào nút Thêm , sau đó nhấp vào nút Áp dụng để triển khai tunnel .
 Khi tunnel  đang chạy, hãy sử dụng  ứng dụng client  VNC để kết nối với localhost:59000 . Bạn sẽ  được yêu cầu  xác thực bằng password  bạn đã đặt ở Bước 1.
Sau khi được kết nối, bạn sẽ thấy màn hình Xfce mặc định. Nó trông giống như sau :
Bạn có thể truy cập các file trong folder chính của bạn bằng trình quản lý file hoặc từ dòng lệnh, như được thấy ở đây:
 Nhấn CTRL+C trong terminal  local  của bạn để dừng tunnel  SSH và quay lại  dấu nhắc  của bạn. Thao tác này cũng sẽ ngắt kết nối phiên VNC của bạn.
Bước 4 - Chạy VNC như một Dịch vụ Hệ thống
Bằng cách cài đặt server VNC để chạy như một dịch vụ systemd, bạn có thể sử dụng các lệnh quản lý start, stop và khởi động lại server của systemd, cũng như cho phép nó bắt đầu chạy khi nào server khởi động.
 Đầu tiên, hãy tạo một file  đơn vị systemd mới có tên /etc/systemd/system/vncserver@.service :
- sudo nano /etc/systemd/system/vncserver@.service 
Ký hiệu @ ở cuối tên sẽ cho phép  ta  chuyển đối số mà bạn có thể sử dụng trong cấu hình dịch vụ. Bạn sẽ sử dụng nó để chỉ định cổng hiển thị VNC mà bạn 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 của bạn:
[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 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i  [Install] WantedBy=multi-user.target Lưu và đóng file .
Tiếp theo, làm cho hệ thống biết file đơn vị mới:
- sudo systemctl daemon-reload 
Bật file đơn vị:
- 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ư bạn sẽ khởi động bất kỳ dịch vụ systemd nào khác:
- sudo systemctl start vncserver@1 
Bạn có thể xác minh nó đã bắt đầu bằng lệnh này:
- sudo systemctl status vncserver@1 
Xem hướng dẫn của  ta  về Cách sử dụng Systemctl để quản lý các đơn vị và dịch vụ Systemd để biết thêm thông tin về systemctl .
Để kết nối lại, hãy bắt đầu lại tunnel SSH của bạn:
- ssh -L 59000: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 của bạn tới localhost: 59000 để kết nối với  server  của bạn.
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 20.04 của bạn. Như vậy, bạn có thể quản lý các file , phần mềm và cài đặt của bạn bằng giao diện đồ họa thân thiện với user và bạn có thể chạy phần mềm đồ họa như trình duyệt web từ xa.
Các tin liên quan
Cách cài đặt và cấu hình VNC trên Ubuntu 20.042020-05-11
Cách cài đặt Node.js trên Ubuntu 20.04
2020-05-08
Cách cài đặt và cấu hình VNC trên Ubuntu 18.04
2020-05-07
Cách cài đặt Java với Apt trên Ubuntu 18.04
2020-05-07
Cách cài đặt Django và thiết lập môi trường phát triển trên Ubuntu 20.04
2020-05-07
Cách cài đặt Java với Apt trên Ubuntu 20.04
2020-05-07
Cách cài đặt Django và thiết lập môi trường phát triển trên Ubuntu 16.04
2020-05-06
Cách thêm không gian swap trên Ubuntu 20.04
2020-05-04
Cách cài đặt Jenkins trên Ubuntu 18.04
2020-05-04
Cách thiết lập firewall với UFW trên Ubuntu 20.04
2020-05-04
 

