Thứ Bảy, 7 tháng 2, 2026

Hướng dẫn cài đặt và cấu hình VNC Server trên Debian 10

Virtual Network Computing (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 để thao tác với môi trường desktop đồ họa trên máy chủ từ xa. Nó hỗ trợ những người dùng chưa quen với dòng lệnh trong việc quản lý tệp, phần mềm và thiết lập trên máy chủ từ xa.

Trong hướng dẫn này, chúng ta sẽ cài đặt và cấu hình VNC Server trên Debian 10, đồng thời kết nối an toàn đến VNC thông qua đường hầm SSH. Bạn sẽ sử dụng TightVNC, một gói điều khiển từ xa nhanh và gọn nhẹ. Lựa chọn này sẽ giúp kết nối VNC mượt mà và ổn định ngay cả trên các kết nối internet chậm.

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

Điều kiện tiên quyết

Để thực hiện hướng dẫn này, bạn cần:

  • Một máy chủ Debian 10 đã được thiết lập, bao gồm một người dùng không phải root có quyền sudo và tường lửa.
  • Một máy tính cục bộ đã cài VNC client, hỗ trợ kết nối VNC qua đường hầm SSH.
    • Trên Windows, bạn có thể sử dụng TightVNC, RealVNC hoặc UltraVNC.
    • Trên macOS, bạn có thể dùng chương trình Screen Sharing tích hợp sẵn, hoặc sử dụng ứng dụng đa nền tảng như RealVNC.
    • Trên Linux, bạn có nhiều lựa chọn, bao gồm vinagre, krdc, RealVNC hoặc TightVNC.

Khi đã chuẩn bị đầy đủ, chúng ta sẽ tiếp tục với bước đầu tiên.

Bước 1: Cài đặt môi trường Desktop và VNC Server

Mặc định, Debian 10 không cài sẵn môi trường desktop đồ họa cũng như VNC Server. Vì vậy, bước đầu tiên chúng ta cần làm là bổ sung chúng vào hệ thống. Ở đây, bạn sẽ cài đặt môi trường desktop Xfce phiên bản mới nhất cùng với gói TightVNC có sẵn trong repository chính thức của Debian.

Trên máy chủ, bạn hãy cập nhật danh sách các gói bằng lệnh sau:

sudo apt update
Copy

Tiếp đến, cài đặt môi trường desktop Xfce trên máy chủ:

sudo apt install xfce4 xfce4-goodies
Copy

Trong quá trình cài đặt, hệ thống sẽ yêu cầu bạn chọn bố cục bàn phím từ danh sách các tùy chọn có sẵn. Hãy chọn bố cục nào phù hợp với ngôn ngữ mà bạn đang dùng rồi nhấn Enter để tiếp tục quá trình cài đặt.

Sau khi hoàn tất cài đặt, bước kế tiếp là thiết lập TightVNC server:

sudo apt install tightvncserver
Copy

Để hoàn tất cấu hình ban đầu cho VNC Server sau khi cài đặt, hãy dùng lệnh vncserver để thiết lập mật khẩu bảo mật và tạo các tệp cấu hình khởi tạo:

vncserver
Copy

Tiếp theo, sẽ có yêu cầu nhập và xác nhận mật khẩu để truy cập vào máy từ xa:

Output

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

Mật khẩu phải có độ dài từ 6 đến 8 ký tự. Mật khẩu dài hơn 8 ký tự sẽ tự động bị cắt ngắn.

Sau khi xác nhận mật khẩu, hệ thống sẽ hỏi bạn có muốn tạo thêm mật khẩu chỉ xem (view-only password) hay không. Những ai đăng nhập bằng loại mật khẩu này không thể thao tác VNC bằng chuột hay bàn phím. Tùy chọn này dành cho những ai đang muốn trình chiếu cho người khác theo dõi trên VNC Server, nhưng không bắt buộc.

Sau đó, quá trình này sẽ tạo các tệp cấu hình mặc định và thông tin kết nối máy chủ:

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
Copy

Tiếp theo, cấu hình để khởi chạy Xfce và cho phép truy cập vào server qua giao diện đồ họa.

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

VNC Server cần biết các lệnh nào sẽ được thực thi khi khởi động. Cụ thể, VNC cần biết nó sẽ kết nối với môi trường desktop đồ họa nào.

Các lệnh này nằm trong tệp cấu hình tên là xstartup trong thư mục .vnc dưới thư mục home của bạn. Script khởi động này đã được tạo ra khi bạn chạy lệnh vncserver ở bước trước, nhưng bạn sẽ tạo script riêng để khởi chạy desktop Xfce.

Khi VNC được thiết lập lần đầu, nó sẽ khởi chạy một server mặc định trên cổng 5901. Cổng này được gọi là display port (cổng hiển thị), và trong VNC nó được tham chiếu là :1. VNC có thể khởi chạy nhiều instance khác trên các cổng hiển thị khác nhau, như :2:3

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

vncserver -kill :1
Copy

Kết quả đầu ra sẽ hiển thị PID cụ thể trong môi trường server của bạn:

Output

Killing Xtightvnc process ID 17648
Copy

Sao lưu bản gốc trước khi chỉnh sửa tệp xstartup bằng lệnh:

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Copy

Bây giờ hãy tạo một tệp xstartup mới và mở bằng trình soạn thảo văn bản ưa thích:

nano ~/.vnc/xstartup
Copy

Các lệnh trong tệp này sẽ được thực thi tự động bất cứ khi nào bạn khởi động hoặc khởi động lại VNC Server. Bạn cần VNC khởi chạy môi trường desktop nếu nó chưa chạy. Thêm các dòng sau vào tệp:

~/.vnc/xstartup

#!/bin/bash xrdb $HOME/.Xresources startxfce4 &
Copy

Dưới đây là mô tả ngắn gọn cho từng dòng:

  • #!/bin/bash: Dòng đầu tiên là shebang. Trong các tệp văn bản thực thi trên nền tảng *nix, shebang cho hệ thống biết sẽ dùng trình thông dịch nào để chạy tệp. Trong trường hợp này, tệp sẽ được chuyển cho trình thông dịch Bash, cho phép các dòng tiếp theo được thực thi tuần tự như các lệnh.
  • xrdb $HOME/.Xresources: Lệnh này báo cho nền tảng GUI của VNC đọc tệp .Xresources của người dùng. Đây là nơi người dùng có thể thay đổi một số thiết lập cho desktop đồ họa, như màu sắc terminal, chủ đề con trỏ và cách hiển thị font chữ.
  • startxfce4 &: Lệnh này báo cho server khởi chạy Xfce. Đây chính là nơi bạn sẽ có tất cả phần mềm đồ họa cần thiết để quản lý server thuận tiện hơn.

Khi hoàn tất, lưu và thoát khỏi trình soạn thảo. Nếu bạn dùng nano, nhấn CTRL+X, sau đó Y, rồi nhấn ENTER.

Để đảm bảo VNC Server có thể sử dụng tệp khởi động mới này, bạn cần cho phép nó thực thi:

sudo chmod +x ~/.vnc/xstartup
Copy

Bây giờ, khởi động lại VNC Server:

vncserver
Copy

Kết quả sẽ 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
Copy

Sau khi hoàn tất cấu hình, bạn đã sẵn sàng kết nối tới VNC Server từ máy cục bộ.

Bước 3: Kết nối an toàn với Desktop VNC

Bản thân VNC không sử dụng các giao thức bảo mật khi kết nối. Để kết nối an toàn, bạn sẽ thông qua một đường hầm SSH để kết nối tới máy chủ, sau đó cấu hình ứng dụng VNC client để sử dụng đường hầm đó thay vì tạo kết nối trực tiếp.

Tạo một kết nối SSH trên máy tính cục bộ 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 qua terminal trên Linux hoặc macOS với lệnh sau. Nhớ thay thế sammy và your_server_ip bằng tên người dùng không phải root và địa chỉ IP của máy chủ:

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

Lưu ý, không có bất kỳ đầu ra nào được trả về sau khi bạn chạy lệnh này trong terminal trên máy cục bộ. Bạn sẽ phải dùng ứng dụng VNC client để xem giao diện đồ họa.

Các tùy chọn trong lệnh ssh này có ý nghĩa như sau:

  • Tùy chọn L chỉ định ràng buộc cổng. Trong trường hợp này bạn ràng buộc cổng 5901 của kết nối từ xa với cổng 5901 trên máy cục bộ.
  • Tùy chọn C bật nén để giúp giảm tiêu thụ tài nguyên và tăng tốc độ.
  • Tùy chọn N báo cho ssh biết bạn không muốn thực thi lệnh từ xa.
  • Tùy chọn l chỉ định tên đăng nhập từ xa.

Nếu bạn dùng PuTTY để kết nối đến máy chủ, bạn có thể tạo đường hầm 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 đó chọn tùy chọn Change Settings…:

cấu hình VNC Server trên Debian 10

Nhấp chuột phải vào thanh trên cùng để hiện tùy chọn Change Settings

Tìm nhánh Connection trong menu dạng cây ở phía bên trái cửa sổ PuTTY Reconfiguration → mở rộng nhánh SSH → nhấp vào Tunnels. Trên màn hình Options controlling SSH port forwarding, nhập 5901 vào ô Source Port → nhập localhost:5901 vào ô Destination, như sau:

cấu hình VNC Server trên Debian 10

Thêm thông tin port và đích vào PuTTY

Nhấn nút Add → Apply để triển khai đường hầm.

Khi đường hầm đang chạy, hãy dùng ứng dụng VNC client để kết nối tới localhost:5901. Bạn sẽ được yêu cầu xác thực bằng mật khẩu đã đặt ở Bước 1.

Khi đã kết nối, desktop mặc định Xfce sẽ xuất hiện như sau:

Giao diện đồ họa mặc định Xfce cho kết nối VNC tới máy chủ Debian 10

cấu hình VNC Server trên Debian 10

Môi trường desktop Xfce khi bạn lần đầu truy cập thông qua kết nối VNC

Chọn Use default config để cấu hình desktop.

Bạn có thể truy cập tệp trong thư mục home của mình bằng trình quản lý tệp hoặc từ dòng lệnh, như hiển thị ở đây:

Ảnh 4 Các tệp qua kết nối VNC tới Debian 10

Trên máy cục bộ, nhấn CTRL+C trong terminal để dừng đường hầm SSH và quay lại dấu nhắc lệnh. Thao tác này sẽ ngắt kết nối phiên VNC của bạn.

Tiếp theo, bạn sẽ thiết lập VNC Server như một dịch vụ.

Bước 4: Chạy VNC như một dịch vụ hệ thống

Tiếp theo, bạn sẽ thiết lập VNC Server như một dịch vụ systemd. Bạn có thể khởi động, dừng và khởi động lại server khi cần, giống như bất kỳ dịch vụ nào khác. Việc này cũng sẽ đảm bảo VNC tự động khởi động khi reboot máy chủ.

Đầu tiên, tạo một tệp unit mới có tên /etc/systemd/system/vncserver@.service bằng trình soạn thảo văn bản bạn thích:

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

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

Thêm các dòng sau vào tệp. Đừng quên thay đổi giá trị của UserGroupWorkingDirectory và tên người dùng trong giá trị của PIDFILE sao cho khớp với tên người dùng 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
Copy

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 là 24-bit với độ phân giải 1280×800. Có thể chỉnh sửa các tùy chọn khởi động này để phù hợp với nhu cầu.

Lưu và đóng tệp sau khi hoàn tất.

Tiếp theo, cho hệ thống nhận biết tệp unit mới:

sudo systemctl daemon-reload
Copy

Sau đó, kích hoạt tệp unit:

sudo systemctl enable vncserver@1.service
Copy

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ư đã đề cập trong Bước 2.

Dừng phiên bản hiện tại của VNC Server nếu nó vẫn đang chạy:

vncserver -kill :1
Copy

Sau đó khởi động nó như cách bạn khởi động bất kỳ dịch vụ systemd nào khác:

sudo systemctl start vncserver@1
Copy

Bạn có thể xác minh xem VNC đã khởi động hay chưa bằng lệnh sau:

sudo systemctl status vncserver@1
Copy

Nếu VNC khởi động đúng cách, đầu ra sẽ tương tự 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 Fri 2022-08-19 16:21:36 UTC; 5s ago Process: 24469 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Process: 24474 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1 (code=exited, status=0/SUCCESS) Main PID: 24482 (Xtightvnc) . . .
Copy

Giờ thì VNC Server đã sẵn sàng khi bạn reboot máy.

Khởi động lại đường hầm SSH:

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

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

Kết luận

Bạn đã có một VNC Server an toàn và hoạt động ổn định trên máy chủ Debian 10. Giờ đây, bạn có thể quản lý tệp, phần mềm và các cài đặt thông qua giao diện đồ họa quen thuộc, thân thiện, đồng thời chạy các ứng dụng đồ họa như trình duyệt web từ xa.

=============================
TƯ VẤN: Click Here hoặc Hotline/Zalo 090.29.12.888
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master