- Vixual - http://www.vixual.net/blog -

Linux 上的遠端桌面中繼程式: xrdp (v0.4.2)

遠端桌面(RDP)」相對於 VNC 的好處應該是:

  1. 連線的過程中有加密
  2. 可設定登入時的解析度
  3. 方便切換輸入法
  4. 操作起來似乎比 VNC 還流暢

現在遠端桌面可不再是 Windows 的專利,在 Linux 上也可以進行遠端桌面的存取,如果純粹只要有 Viewer 的功能可安裝 rdesktop,如果要同時有 Viewer 及 Server 的功能請安裝 xrdp,以下介紹 xrdp。

其實 xrdp 是一個 Linux 遠端桌面的「中繼程式」。連到 xrdp server,先是看到一個登入介面,再由它提供的 sesman 服務 (libvnc.so) 來登入本機的桌面。而 xrdp 除了可以讓你用遠端桌面連線存取 Linux 桌面之外,還能透過它來登入其它 Windows 的遠端桌面、VNC Server,以及其它也有安裝 xrdp 的主機。並且是允許你用不同帳號進行「多重登入」,這在 Windows 的系統只有 Windows Server 才支援。

所以說,安裝了 xrdp 等於是安裝了:

  1. RDP Server (允許多重登入)
  2. RDP Viewer
  3. XRDP Viewer
  4. VNC Viewer

安裝 xrdp

(xrdp 自 v0.5.0 之後,安裝與啟動的方式也有所不同,如要安裝新版的 xrdp,請參考本站另一篇教學,以下是針對 v0.4.2 的安裝說明)

1. 安裝 xrdp 前請先確定系統已經安裝了 gcc, pam-devel, openssl-devel,可使用下列指令安裝:

yum install gcc pam-devel openssl-devel

2. 到 http://xrdp.sf.net 下載 xrdp 的原始檔並安裝:

cd /usr/local/src
wget http://jaist.dl.sourceforge.net/sourceforge/xrdp/xrdp-0.4.2.tar.gz
tar -xzvf xrdp-0.4.2.tar.gz
cd xrdp-0.4.2
make
make install

3. 編輯 /etc/rc.d/rc.local,加入:

/usr/local/xrdp/xrdp_control.sh start

啟動 xrdp

啟動 xrdp 指令:

/usr/local/xrdp/xrdp_control.sh start

xrdp 的設定檔

相關設定檔放在 /etc/xrdp/,比較重要的是「xrdp.ini」,裡面訂定了 xrdp 的連接埠 3389 與登入種類。請確保 xrdp server 上的防火牆有允許 3389 連接埠通過。

另一個設定檔「sesman.ini」則定義了本機啟動的「sesman」服務之運作方式。在 [Globals] 中的這一行:

ListenAddress=127.0.0.1

表示 sesman 只允許從本機登入,如果配合 xrdp 的「sesman-any」要從別的主機登入,可將 127.0.0.1 改成 0.0.0.0 才能允許登入。

登入 xrdp

啟動 xrdp 之後,你的 Linux 主機基本上已經具備了接受遠端桌面連線的功能,其連接埠為 3389,請用 Windows 的「遠端桌面連線」進行存取。

連線後,首先會看到 xrdp 的登入視窗,你可以選擇登入的種類:

  1. sesman-Xvnc: 透過 xrdp 的 sesman 服務登入本機的桌面,本機不需啟動 VNC Server。
  2. console: 登入本機的 VNC Server,本機需另外啟動 VNC Server。
  3. vnc-any: 登入其它已經啟動 VNC Server 的主機。
  4. sesman-any: 登入其它有安裝 xrdp 或有執行 sesman 的主機。
  5. rpd-any: 登入其它已經啟動遠端桌面 (RDP Server) 的 Windows 主機。
  6. sesman-X11rdp: 這個項目我沒有測試成功,從字面上的意思來看,應該是連結本機端由 X Server 提供的 RDP,但目前 Linux 的桌面應該還沒有具備這樣的功能!

以上的登入種類如果太多,可以編輯 /etc/xrdp/xrdp.ini,將 [xrdp*] 的各個區段予以刪除或修改排序。

桌面環境

以「sesman-Xvnc」選項登入 Linux 桌面後,預設是使用 KDE 桌面,其作業環境是英文的,這些設定都與「startwm.sh」這個指令檔有關。

如果要改成中文環境,請編輯 /usr/local/xrdp/startwm.sh 或 /etc/xrdp/startwm.sh,在指令檔的第二行加入:

export LANG=zh_TW.UTF-8

這樣就可以了。