Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 RDP 伺服器

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 RDP 伺服器
В 上一篇文章 我們討論了在任何類型的虛擬機器上運行 VNC 伺服器。 這種方案有許多缺點,其中最主要的一個是對資料傳輸通道的吞吐量要求較高。 今天我們將嘗試透過 RDP(遠端桌面協定)連接到 Linux 上的圖形桌面。 VNC 系統基於使用 RFB(遠端幀緩衝區)協定傳輸像素陣列,而 RDP 可讓您傳送更複雜的圖形基元和進階命令。 它通常用於在 Windows 上託管遠端桌面服務,但也可以使用適用於 Linux 的伺服器。

目錄:

安裝圖形環境
伺服器和軟體安裝的俄羅斯化
安裝和設定 RDP 伺服器
設定防火牆
連接到 RDP 伺服器
會話管理器和使用者會話
切換鍵盤佈局

安裝圖形環境

我們將採用一台配備 Ubuntu Server 18.04 LTS 的虛擬機,該虛擬機具有兩個計算核心、10 GB RAM 和 10 GB 硬碟 (HDD)。 較弱的配置不適合圖形桌面,儘管這取決於要解決的任務。 不要忘記使用促銷代碼 HabrahabrXNUMX 以獲得訂單 XNUMX% 的折扣。

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 RDP 伺服器
使用以下命令安裝具有所有相依性的桌面環境:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

和前面的案例一樣,我們選擇XFCE是因為它對計算資源的要求相對較低。

伺服器和軟體安裝的俄羅斯化

通常,虛擬機器僅以英語本地化方式部署。 在桌面上,您可能需要俄語,這很容易設定。 首先,讓我們安裝系統程式的翻譯:

sudo apt-get install language-pack-ru

讓我們設定本地化:

sudo update-locale LANG=ru_RU.UTF-8

透過手動編輯 /etc/default/locale 可以達到相同的效果。

對於 GNOME 和 KDE 的本地化,存儲庫具有 language-pack-gnome-ru 和 language-pack-kde-ru 軟體包 - 如果您使用這些桌面環境中的程序,您將需要它們。 在 XFCE 中,翻譯與應用程式一起安裝。 接下來您可以安裝字典:

# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru

# Тезаурус для LibreOffice
sudo apt-get install mythes-ru

# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dict

此外,某些應用程式可能需要安裝翻譯:

# Браузер Firefox
sudo apt-get install firefox firefox-locale-ru

# Почтовый клиент Thunderbird
sudo apt-get install thunderbird thunderbird-locale-ru

# Офисный пакет LibreOffice
sudo apt-get install libreoffice libreoffice-l10n-ru libreoffice-help-ru

這樣就完成了桌面環境的準備,剩下的就是設定RDP伺服器了。

安裝和設定 RDP 伺服器

Ubuntu 儲存庫有一個免費分發的 Xrdp 伺服器,我們將使用它:

sudo apt-get install xrdp

如果一切順利,伺服器應該會自動啟動:

sudo systemctl status xrdp

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 RDP 伺服器
Xrdp 伺服器以 xrdp 使用者權限執行,預設採用 /etc/ssl/private/ssl-cert-snakeoil.key 憑證,可以用您自己的憑證取代。 要有權讀取該文件,您需要將使用者新增至 ssl-cert 群組:

sudo adduser xrdp ssl-cert

預設設定可以在 /etc/default/xrdp 檔案中找到,所有其他伺服器設定檔都位於 /etc/xrdp 目錄中。 主要參數在xrdp.ini檔案中,不需要更改。 此配置有詳細的文件記錄,並且包含對應的線上說明頁:

man xrdp.ini
man xrdp

剩下的就是編輯 /etc/xrdp/startwm.sh 腳本,該腳本在使用者會話初始化時執行。 首先,讓我們從發行版中建立腳本的備份副本:

sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.sh

要啟動 XFCE 桌面環境,您需要一個如下所示的腳本:

#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4

請注意:在腳本中最好編寫可執行檔的完整路徑 - 這是一個好習慣。 讓我們使腳本可執行,此時 Xrdp 伺服器的配置可以認為已完成:

sudo chmod 755 /etc/xrdp/startwm.sh

重新啟動伺服器:

sudo systemctl restart xrdp

設定防火牆

預設情況下,Xrdp 在所有介面上偵聽 TCP 連接埠 3389。 根據虛擬伺服器配置,您可能需要設定 Netfilter 防火牆。 在 Linux 上,這通常是使用 iptables 實用程式完成的,但在 Ubuntu 上,最好使用 ufw。 如果客戶端的IP位址已知,則使用下列命令進行設定:

sudo ufw allow from IP_Address to any port 3389

您可以允許來自任何 IP 的連接,如下所示:

sudo ufw allow 3389

RDP 協定支援加密,但將 Xrdp 伺服器暴露在公共網路中是一個壞主意。 如果客戶端沒有固定IP,伺服器應該只監聽localhost以增加安全性。 最好透過 SSH 隧道存取它,這將安全地重定向來自客戶端電腦的流量。 我們有類似的方法 在上一篇文章中使用過 對於VNC伺服器。

連接到 RDP 伺服器

要使用桌面環境,最好建立一個單獨的非特權使用者:

sudo adduser rdpuser

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 RDP 伺服器
讓我們將使用者新增至 sudo 群組,以便他可以執行與管理相關的任務。 如果沒有這個需求,可以跳過這一步:

sudo gpasswd -a rdpuser sudo

您可以使用任何 RDP 用戶端連線到伺服器,包括內建的 Windows 遠端桌面服務用戶端。 如果 Xrdp 正在偵聽外部接口,則無需執行其他操作。 在連線設定中指定 VPS IP 位址、使用者名稱和密碼就足夠了。 連結後,我們會看到這樣的內容:

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 RDP 伺服器
桌面環境初始設定完成後,我們將獲得一個完整的桌面。 正如您所看到的,它不會消耗太多資源,儘管一切都取決於所使用的應用程式。

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 RDP 伺服器
如果 Xrdp 伺服器僅偵聽 localhost,則用戶端電腦上的流量必須打包到 SSH 隧道中(sshd 必須在 VPS 上執行)。 在 Windows 上,您可以使用圖形 SSH 用戶端(例如 PuTTY),在 UNIX 系統上,您需要 ssh 實用程式:

ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ip

隧道初始化後,RDP用戶端將不再連接遠端伺服器,而是連接本地主機。

行動裝置就更困難了:必須購買能夠建立隧道的SSH客戶端,而在iOS和iPadOS中,第三方應用程式的後台操作由於能耗優化得太好而變得困難。 在 iPhone 和 iPad 上,您將無法在單獨的應用程式中建立隧道;您將需要一個本身可以透過 SSH 建立 RDP 連接的收割機應用程式。 比如說,比如 遠端遙控專業版.

會話管理器和使用者會話

多用戶工作的能力直接在Xrdp伺服器中實現,不需要額外的配置。 透過 systemd 啟動服務後,一個程序以守護程序模式運行,偵聽連接埠 3389 並透過 localhost 與會話管理器進行通訊。

ps aux |grep xrdp

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 RDP 伺服器

sudo netstat -ap |grep xrdp

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 RDP 伺服器
會話管理器通常對使用者不可見,因為用戶端設定中指定的登入名稱和密碼會自動傳輸給它。 如果沒有發生這種情況或在身分驗證過程中出現錯誤,則會出現互動式登入視窗而不是桌面。

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 RDP 伺服器
自動啟動會話管理器在 /etc/default/xrdp 檔案中指定,配置儲存在 /etc/xrdp/sesman.ini 中。 預設情況下,它看起來像這樣:

[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh

[Security]
AllowRootLogin=true
MaxLoginRetry=4
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
; When AlwaysGroupCheck=false access will be permitted
; if the group TerminalServerUsers is not defined.
AlwaysGroupCheck=false

[Sessions]

您不必在此處進行任何更改,只需停用 root 權限登入 (AllowRootLogin=false)。 對於系統中授權的每個用戶,都會啟動一個單獨的 xrdp 進程:如果您在未結束會話的情況下斷開連接,用戶進程將預設繼續運行,您可以再次連接到會話。 可以在 /etc/xrdp/sesman.ini 檔案([Sessions] 部分)中更改設定。

切換鍵盤佈局

雙向剪貼簿通常沒有問題,但是使用俄語鍵盤佈局,您將不得不稍微嘗試一下(俄語區域設定應該已經是 已安裝)。 讓我們編輯 Xrdp 伺服器的鍵盤設定:

sudo nano /etc/xrdp/xrdp_keyboard.ini

您需要將以下行新增至設定檔的末尾:

[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru

剩下的就是保存檔案並重新啟動 Xrdp:

sudo systemctl restart xrdp

正如你所看到的,在Linux VPS上設定RDP伺服器並不困難,但是 上一篇文章 我們已經討論了 VNC 設定。 除了這些技術之外,還有另一個有趣的選擇:使用修改過的 NX 3 協定的 X2Go 系統。 我們將在下一篇文章中處理它。

Linux 上具有圖形介面的 VPS:在 Ubuntu 18.04 上啟動 RDP 伺服器

來源: www.habr.com

添加評論