Cách cài đặt và cấu hình VNC trên Ubuntu 18.04
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 này, bạn sẽ cài đặt server VNC trên server Ubuntu 18.04 và kết nối với server đó 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 của ta 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 cài đặt theo hướng dẫn cài đặt 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.
Bước 1 - Cài đặt Môi trường Máy tính để bàn và Server VNC
Theo mặc định, server Ubuntu 18.04 không đi kèm với môi trường máy tính để bàn (có giao diện đồ họa) hoặc server VNC được cài đặt, vì vậy ta sẽ bắt đầu bằng cách cài đặt chúng. Cụ thể, 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 lưu trữ chính thức của Ubuntu.
Trên server của bạn, hãy cập nhật danh sách các gói của bạn:
- sudo apt update
Bây giờ cài đặt môi trường máy tính để bàn Xfce trên server của bạn:
- sudo apt install xfce4 xfce4-goodies
Khi cài đặt xong , 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
để cài đặt password an toàn và tạo file cấu hình ban đầu:
- vncserver
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ự. Mật khẩu 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 aa 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 hữu ích nếu bạn muốn chứng minh điều gì đó với người khác bằng server 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 file cấu hình mặc định cần thiết và thông tin kết nối cho server :
OutputWould 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
folder 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 ta sẽ tạo tập lệnh riêng để chạy máy tính để bàn Xfce.
Khi VNC được cài đặt 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.
Bởi 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
Đầu ra sẽ giống như thế này, có thể bạn sẽ thấy một PID khác:
OutputKilling Xtightvnc process ID 17648
Trước khi bạn sửa đổi file xstartup
, hãy backup 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 của bạn:
- 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 hoặc khởi động lại server VNC. Ta cần VNC để khởi động môi trường máy tính để bàn của ta nếu nó chưa bắt đầu. Thêm các lệnh này vào file :
#!/bin/bash xrdb $HOME/.Xresources startxfce4 &
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 . .Xresources
là nơi user có thể áp dụng các 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ủ đề 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 sẽ 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:
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
Với cấu hình tại chỗ, hãy kết nối với server từ máy local của ta .
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 của ta và sau đó yêu cầu ứng dụng client VNC của ta 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 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 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 đang cổng kết nối 5901
của kết nối từ xa với cổng 5901
trên máy local của bạn. Lựa chọn -C
cho phép nén dữ liệu, trong khi lựa chọn -N
cho ssh
biết 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ế sammy
và your_server_ip
bằng tên user không phải root có quyền sudo và địa chỉ IP của server của bạn.
Nếu bạn đang sử dụng một ứng 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 ứng dụng client VNC để kết nối với localhost:5901
. 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 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.
Tiếp theo, hãy cài đặt server VNC của ta 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ẽ cài đặt 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 của bạn khởi động lại.
Đầu tiên, hãy tạo một file đơn vị mới có tên /etc/systemd/system/vncserver@.service
bằng editor yêu thích của bạn:
- 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 ta 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 :%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 của bạn .
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
Nếu nó bắt đầu đúng , kết quả sẽ giố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 của bạn bây giờ sẽ tự chạy khi bạn khởi động lại máy .
Bắt đầu lại tunnel SSH của bạn:
- 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 của bạn tới localhost:5901
để kết nối với máy 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 18.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 dễ sử dụng và quen thuộc, đồng thời 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 Java với Apt trên Ubuntu 18.042020-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
Cách cài đặt và sử dụng Composer trên Ubuntu 20.04
2020-05-04
Cách cài đặt và cấu hình Elasticsearch trên Ubuntu 20.04
2020-04-30
Cách thiết lập và cấu hình Tổ chức phát hành chứng chỉ (CA) trên Ubuntu 20.04
2020-04-28