「xrdp」- 使用 Windows 遠程 Linux 主機 @20210129


xrdp

xrdp,是 RDP 協議的服務端實現,基於 FreeRDP 和 rdesktop 的工作,xrdp 使用 RDP(遠程桌面協議)向用戶呈現圖形化界面。該項目提供一個功能齊全的 RDP 服務端,能夠接受來自 rdesktop、freerdp、微軟自己的遠程桌面客戶端的連接。與 Windows NT/2000/2003/2008/2012 服務器不同,xrdp 不會顯示 Windows 桌面,而是顯示 X Window 桌面。

基本原理

xrdp 並不直接提供桌面的顯示功能,而是使用Xvnc或X11rdp來管理X Session,並顯示桌面

RDP Client

RDP的客戶端,用於連接RDP Server。

RDP Server

xrdp,RDP的服務端,用於接受來自於RDP Client的連接請求,xrdp可以接受freerdp、rdesktop、Windows內建的遠程桌面的連接,並向用戶顯示一個登錄界面,該界面用於輸入Username、Password並選擇桌面管理模塊。

xrdp包含RDP、Security、MCS、ISO、TCP層、一個簡單的窗口管理器、一些控件。它是一個多線程單進程的服務進程,正是在這個單進程中,進行着會話的中央管理。中央管理包括會話投影、管理給用戶的彈出窗口。

xrdp 由 xrdp.ini 配置文件控制。

在RDP Server和RDP Client之間有3個安全級別。低、中、高:

 

  • 低:40位,從Client到Server的數據是加密的;
  • 中:40位,雙向加密;
  • 高:128位,雙向加密;

 

xrdp支持的3個加密級別在xrdp.ini文件中配置。在Client連接之前,RSA密鑰交換使用Client和Server的隨機值來創建RC4密鑰。

桌面管理模塊在運行時才進行加載,以提供真正的功能。可以創建許多不同的模塊來向用戶展示多種不同的桌面中的一種。這些可加載模塊用以節省內存,並且支持GPL和非GPL模塊。

多線程來提供最佳的用戶性能。一個Client不會導致整體性能下降。使用任何模塊進行會話投影也需要一個多線程進程。模塊不必考慮投影,投影由xrdp負責。例如,可以使用相同的投影工具來映射VNC、RDP、自定義模塊會話。

用於發送彈窗給任何用戶的xrdp的內建窗口管理器與桌面管理模塊無關,可以在任何模塊下運行,也可以用作提供連接錯誤、提示。

xrdp可以連接到與xorgxrdp驅動程序在本地創建的X.org會話,或者到VNC X11服務器,並轉發到另一台RDP服務器。

桌面管理模塊

libvnc
用在xrdp中的VNC模塊。libvnc提供了到VNC Server的連接,是一個簡單的客戶端,只提供了集中簡單的編碼(raw, cursor, copyrect),重點在於快和小。通常情況下,xrdp Server和Xvnc Server在同一台機器上,所以位圖的壓縮編碼只會拖慢Session。

librdp
xrdp的RDP模塊,用於提供到RDP Server的連接。當前只支持RDP4.

sesman
session管理器。sesman是xrdp的會話管理器。xrdp連接到sesman以驗證用戶名、密碼,並且如果憑證正常,還啟動用戶會話。 這是一個多進程、僅Linux的會話管理器。會話可以通過sesrun從命令行啟動或查看。

xorgdriver
xrdp可以使用xorgdriver連接到一個本地創建的X.org Session。

在xorgxrdp(替代了X11RDP)和VNC模式中,xrdp提供了全功能的的Linux終端服務,向用戶提供了X-Window桌面。

在RDP或者VNC的轉發模式中,任何使用任何類型的桌面。

搭建 xrdp 服務(Linux)

第一步、安裝服務

# Kali GNU/Linux Rolling
apt-get install x11-session-utils xfonts-100dpi xfonts-75dpi \
	xfonts-scalable xorg xorg-docs-core xorgxrdp xrdp

# Ubuntu 20.04
apt-get install xrdp

第二步、啟動服務

# 設置窗口管理器,我使用的是fvwm:
# echo 'exec fvwm' > $HOME/.xsession

# 啟動 xrdp 服務
systemctl enable xrdp
systemctl start xrdp

第三步、客戶端連接

在 Linux 下,使用 rdesktop、Remmina 等客戶端遠程;在 Windows 下,可以直接使用遠程桌面進行連接。

我們使用 Ubuntu 20.04 LTS 進行實驗,我們沒有深入研究,但是發現以下特征:
1)當用戶在物理機登錄時,遠程桌面可以連接,但是遠程桌面是黑屏狀態;
2)物理機用戶需要退出登錄,遠程桌面才可以成功顯示桌面;
3)通過遠程登錄的用戶,即使關閉連接(沒有退出登錄),物理機依舊無法登錄該用戶。

參考文獻

WikiNotes/使用 Windows 遠程 Linux 主機
Xrdp - Wikipedia
xrdp by neutrinolabs
How to Establish Remote Desktop Access to Ubuntu From Windows



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM