−25%

cho Windows trả theo năm, đến 31/10. Xem các gói

EQVPS
Bắt đầu

Cách cài desktop trên VPS Linux và kết nối bằng Remote Desktop (XFCE + xrdp)

Một desktop đồ họa trên VPS Ubuntu 24.04, mở bằng ứng dụng Remote Desktop thông thường: XFCE và xrdp, hai thiết lập mặc định làm hỏng mọi thứ (sai phiên, không có TLS), và một cách cấu hình để cổng 3389 không bao giờ hướng ra internet. Kèm số đo dung lượng đĩa và RAM cho mỗi phiên.

Máy chủ Linux không có màn hình, và phần lớn thời gian nó cũng không cần. Đôi khi lại cần: một trình duyệt phải chạy từ chính địa chỉ của máy chủ, một công cụ chỉ có giao diện đồ họa, hoặc một desktop bạn để chạy và quay lại từ bất kỳ máy tính nào. Hướng dẫn này thêm desktop nhẹ XFCE và xrdp vào Ubuntu 24.04, để bạn mở nó bằng chính ứng dụng Remote Desktop dùng cho máy chủ Windows.

Chúng tôi đã thử mọi bước trên ảnh Ubuntu 24.04 của mình. Hai thiết lập mặc định làm hỏng lần thử đầu, và bên dưới chúng tôi sửa cả hai. Bạn cần một người dùng thường có sudo; hướng dẫn thiết lập Ubuntu tạo sẵn một người. Trong ví dụ, người đó tên deploy.

1. Cài XFCE và xrdp

sudo apt update
sudo apt install -y xfce4 xfce4-goodies xrdp

Trên máy chủ 2 GB của chúng tôi, việc này mất khoảng bốn phút rưỡi và chiếm 1,7 GB đĩa (trước đó dùng 2,7 GB, sau đó 4,4 GB). Nó cài xrdp 0.9.24, khởi động ngay và lắng nghe ở cổng 3389.

2. Để xrdp khởi động XFCE, không phải GNOME

Đăng nhập bằng người dùng sẽ dùng desktop và chạy:

echo xfce4-session > ~/.xsession

Không có file này, lần đăng nhập đầu của chúng tôi khởi động GNOME thay vì XFCE, và phiên chết ngay với "Oh no! Something has gone wrong". Các gói ở bước 1 kéo theo trình quản lý phiên của GNOME, và Ubuntu đặt nó làm mặc định. Có ~/.xsession rồi thì xrdp khởi động XFCE.

3. Cho xrdp dùng TLS

xrdp chạy bằng người dùng riêng xrdp, và người dùng này không đọc được khóa riêng của máy chủ. Kết nối đầu tiên của chúng tôi vẫn được, nhưng /var/log/xrdp.log cho thấy vì sao không nên tin nó:

Cannot read private key file /etc/xrdp/key.pem: Permission denied
Non-TLS connection established from ::ffff:127.0.0.1

Không có khóa, xrdp quay về cách mã hóa RDP cũ thay vì TLS. Cấp quyền đọc cho nó rồi khởi động lại:

sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp

Kết nối tiếp theo hiện trong nhật ký của chúng tôi là TLS connection established ... TLSv1.3. Bạn có thể kiểm tra máy chủ của mình cùng cách đó:

sudo grep -E "TLS connection|Non-TLS" /var/log/xrdp.log | tail -2

4. Giữ cổng 3389 tránh xa internet

Sau khi cài, xrdp lắng nghe trên mọi địa chỉ. Khác với Windows, xrdp không có Network Level Authentication, nên ai chạm tới cổng cũng có một màn hình đăng nhập để đoán mật khẩu. Hãy để nó chỉ lắng nghe trên chính máy chủ:

sudo sed -i 's|^port=3389$|port=tcp://127.0.0.1:3389|' /etc/xrdp/xrdp.ini
sudo systemctl restart xrdp
ss -ltn | grep 3389

Dòng cuối phải hiện 127.0.0.1:3389. Trong lần thử của chúng tôi, sau đó kết nối trực tiếp tới địa chỉ máy chủ ở cổng 3389 bị từ chối, còn đường hầm ở bước sau vẫn hoạt động.

5. Kết nối qua SSH

Trên máy tính của bạn, mở một đường hầm. Trên Windows, PowerShell có cùng lệnh ssh:

ssh -L 13389:localhost:3389 deploy@YOUR.SERVER.IP

Với gói NAT, thêm -p và cổng SSH riêng trong bảng điều khiển. Để cửa sổ đó mở. Sau đó trỏ ứng dụng Remote Desktop tới localhost:13389 và đăng nhập bằng deploy với mật khẩu của người dùng đó:

  • Windows: Remote Desktop Connection (mstsc).
  • macOS: Windows App từ App Store.
  • Linux: Remmina, hoặc xfreerdp /v:localhost:13389 /u:deploy.

Cổng ở máy bạn là 13389 chứ không phải 3389, vì cổng 3389 trên máy tính của bạn có thể đã bị Remote Desktop của chính máy đó dùng. Lần đầu, ứng dụng cảnh báo về một chứng chỉ nó không nhận ra. Đó là chứng chỉ tự ký của máy chủ, và kết nối vốn đã được mã hóa bên trong SSH.

6. Bạn nhận được gì

Bạn có một desktop XFCE với thanh panel, trình quản lý file và terminal. Trên máy chủ của chúng tôi, một phiên thêm khoảng 360 MB RAM: 388 MB đã dùng trước khi kết nối, 747 MB trong phiên.

Đóng cửa sổ Remote Desktop không làm bạn đăng xuất. Trong lần thử, một lệnh chạy lâu vẫn tiếp tục sau khi chúng tôi ngắt kết nối. Khi kết nối lại, xrdp đưa chúng tôi về đúng phiên cũ (reconnected session ... display :10 trong nhật ký của nó). Để thật sự kết thúc phiên, dùng Log Out trong menu XFCE.

Chọn gói nào

Desktop cần RAM hơn là CPU. Micro (2 vCPU, 2 GB, 25 GB, $5/tháng) chạy XFCE và công cụ nhẹ thoải mái. Nếu định để trình duyệt mở trong phiên, hãy chọn Small với 4 vCPU và 4 GB giá $8/tháng. Cả hai đều là gói NAT, và ở đây không sao cả: Remote Desktop đi qua cổng SSH của bạn.

Nếu thứ bạn thật sự cần là phần mềm Windows, một Windows VPS chạy nó trực tiếp, và Windows-Small bắt đầu từ $11/tháng. Ubuntu 24.04 có trên trang Ubuntu VPS và trên mọi gói Linux tại VPS. Thanh toán bằng USDT, USDC hoặc ETH trên Base, Ethereum hoặc Polygon.

FAQ

Tôi có thể kết nối bằng ứng dụng Remote Desktop thông thường của Windows không?

Có. xrdp dùng giao thức RDP, nên Remote Desktop Connection có sẵn trên Windows, Windows App trên macOS và Remmina hoặc xfreerdp trên Linux đều dùng được. Bạn kết nối tới localhost qua đường hầm SSH thay vì tới địa chỉ máy chủ.

Cách này có chạy trên gói NAT không?

Có. Kết nối RDP đi bên trong SSH, và SSH chính là cổng duy nhất mà gói NAT chuyển tiếp tới máy chủ của bạn. Hướng dẫn này khuyên dùng cách này trên mọi gói, vì cổng 3389 vẫn đóng với internet.

Desktop dùng bao nhiêu RAM?

Trên máy chủ thử nghiệm của chúng tôi, một phiên XFCE thêm khoảng 360 MB: bộ nhớ đã dùng tăng từ 388 MB lên 747 MB. Gói Micro 2 GB đủ cho desktop và các công cụ nhẹ. Nếu bạn chạy trình duyệt web trong phiên, 4 GB sẽ thoải mái hơn.

Tôi thấy màn hình đen hoặc "Oh no! Something has gone wrong". Lỗi gì vậy?

xrdp đã khởi động GNOME thay vì XFCE. Các gói ở bước 1 kéo theo trình quản lý phiên của GNOME, và Ubuntu đặt nó làm mặc định của hệ thống. Hãy tạo ~/.xsession chứa xfce4-session cho người dùng đăng nhập, rồi kết nối lại.

Tôi có thể đăng nhập RDP bằng root không?

Mặc định xrdp cho phép (AllowRootLogin=true trong /etc/xrdp/sesman.ini), nhưng nên dùng người dùng thường có sudo. Để chặn root, đặt AllowRootLogin=false và khởi động lại xrdp.

Bình luận

Chưa có bình luận nào. Hãy là người đầu tiên.

Để lại bình luận

Bình luận được kiểm duyệt trước khi hiển thị.