Thứ hai, 11/05/2020 | 00:00 GMT+7

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:
    • Trên Windows, 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

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:

Output
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ự; 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:

~ / .vnc / xstartup
#!/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:

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

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… :

Nhấp chuột phải vào thanh trên cùng để hiển thị 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ồnlocalhost:5901 làm Đích , như sau:

Cấu hình tunnel  PuTTY SSH mẫu

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 :

Kết nối VNC với  server  Ubuntu 20.04 với môi trường máy tính để bàn Xfce

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:

Trình quản lý file  qua kết nối VNC với Ubuntu 20.04

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:

/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 -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.


Tags:

Các tin liên quan

Cách cài đặt và cấu hình VNC trên Ubuntu 20.04
2020-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 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 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 cài đặt Jenkins trên Ubuntu 18.04
2020-05-04
Cách thêm không gian swap trên Ubuntu 20.04
2020-05-04
Cách thiết lập firewall với UFW trên Ubuntu 20.04
2020-05-04