Thứ năm, 10/10/2019 | 00:00 GMT+7

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

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 Debian 10 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 Debian 10 được cài đặt theo hướng dẫn cài đặt server ban đầu Debian 10 , bao gồm user không phải root có quyền truy cập 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 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

Theo mặc định, server Debian 10 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ữ Debian chính thức.

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

Trong quá trình cài đặt, bạn sẽ được yêu cầu chọn bố cục bàn phím của bạn từ danh sách các tùy chọn khả thi. Chọn một từ phù hợp với ngôn ngữ của bạn và nhấn Enter . Quá trình cài đặt sẽ tiếp tục.

Sau 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 để 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:

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ự. 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 :

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 folder chính của bạn. Tập lệnh khởi động được tạo khi bạn chạy lệnh vncserver ở bước trước, nhưng ta sẽ tạo tập lệnh của riêng mình để chạy màn hình 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:

Output
Killing 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 :

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

Lệnh đầu tiên trong file , xrdb $HOME/.Xresources , ra lệnh cho khung GUI của VNC đọc file .Xresources của user . .Xresources là nơi user có thể áp dụng các thay đổi đối với các cài đặt nhất định cho 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:

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 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 sammyyour_server_ip bằng tên user không phải root 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.

Kết nối VNC với  server  Debian 10

Chọn Sử dụng cấu hình mặc định để cấu hình nhanh màn hình của bạn.

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:

Tệp qua kết nối VNC với Debian 10

Trên máy local của bạn, 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 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:

/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 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; enabled; vendor preset: enabled) Active: active (running) since Thu 2019-10-10 17:56:17 UTC; 5s ago Process: 935 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Process: 940 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Main PID: 948 (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 đang hoạt động trên server Debian 10 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.


Tags:

Các tin liên quan