前言
大約在六年前的時候,我有使用過LXDE的遠端桌面來進行RDP的連線,相關的文章連結如下:
http://143.198.221.54/windows-%e9%81%a0%e7%ab%af%e6%a1%8c%e9%9d%a2%e5%88%b0lubuntu
時至今日,Ubuntu所發行的版本也從那時候的穩定版14.04跳到16.04,以及現在目前的18.04還有最新的18.04了。
看起來,RDP遠端桌面協定版本也有比之前我在用的時候,進步很多,以及使用GNOME桌面進行遠端連線的改善等等。
本篇文章,是要講述如何在Ubuntu 18.04與20.04上,架設RDP的遠端桌面連線,以及使用GNOME桌面環境來進行遠端桌面操作的桌面環境。
前置條件
- 已經有安裝好Ubuntu 18.04或是Ubuntu 20.04的機器,虛擬機器環境或是一般PC皆可。
建置步驟
為了省略安裝的步驟,因此安裝RDP以及GNOME桌面環境的相關指令皆已經轉換成Bash script,讀者可以複製下面的shell script並存成自己的shell script檔並將檔案權限調整成755。
來執行此shell script,來達到安裝與建置上述的環境之便利性。另外,此shell script是從某個網路上文章進行修改而成的,本來內容也有支援Ubuntu 17.10的版本,但是此為不穩定的版本,筆者也沒有測試過,因此讀者還是就Ubuntu 18.04與20.04為穩定長期支援版本作為測試即可。
相關的shell script內容如下:
################################################################ # Script_Name : Std-Xrdp-install-0.2.sh # Description : Perform an automated standard installation of xrdp # on ubuntu 17.10 and later # Date : April 2018 # written by : Griffon # Web Site :http://www.c-nergy.be - http://www.c-nergy.be/blog # Version : 0.2 # History : 0.2 - Added Logic for Ubuntu 17.10 and 18.04 detection # - Updated the polkit section # - New formatting and structure # 0.1 - Initial Script # Disclaimer : Script provided AS IS. Use it at your own risk.... ################################################################## echo /bin/echo -e "\e[1;36m#-------------------------------------------------------------#\e[0m" /bin/echo -e "\e[1;36m# Standard XRDP Installation Script - Ver 0.2 #\e[0m" /bin/echo -e "\e[1;36m# Written by Griffon - April 2018- www.c-nergy.be #\e[0m" /bin/echo -e "\e[1;36m#-------------------------------------------------------------#\e[0m" echo #---------------------------------------------------# # Step 0 - Try to Detect Ubuntu Version.... #---------------------------------------------------# echo /bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m" /bin/echo -e "\e[1;33m! Detecting Ubuntu version # \e[0m" /bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m" echo version=$(lsb_release -d | awk -F":" '/Description/ {print $2}') if [[ "$version" = *"Ubuntu 17.10"* ]] || [[ "$version" = *"Ubuntu 18.04"* ]] || [[ "$version" = *"Ubuntu 20.04"* ]]; then echo /bin/echo -e "\e[1;32m.... Ubuntu Version :$version\e[0m" /bin/echo -e "\e[1;32m.... Supported version detected....proceeding\e[0m" else /bin/echo -e "\e[1;31m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m" /bin/echo -e "\e[1;31mYour system is not running Ubuntu 17.10 Edition.\e[0m" /bin/echo -e "\e[1;31mThe script has been tested only on Ubuntu 17.10...\e[0m" /bin/echo -e "\e[1;31mThe script is exiting...\e[0m" /bin/echo -e "\e[1;31m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m" echo exit fi #---------------------------------------------------# # Step 1 - Install xRDP Software.... #---------------------------------------------------# echo /bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m" /bin/echo -e "\e[1;33m! Installing XRDP Packages...Proceeding... # \e[0m" /bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m" echo sudo apt-get install xrdp xorg xserver-xorg-core xorgxrdp -y #---------------------------------------------------# # Step 2 - Install Gnome Tweak Tool.... #---------------------------------------------------# echo /bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m" /bin/echo -e "\e[1;33m! Installing Gnome Tweak...Proceeding... # \e[0m" /bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m" echo sudo apt-get install gnome-tweak-tool adwaita-icon-theme-full -y #---------------------------------------------------# # Step 3 - Allow console Access .... #---------------------------------------------------# echo /bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m" /bin/echo -e "\e[1;33m! Granting Console Access...Proceeding... # \e[0m" /bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m" echo sudo sed -i 's/allowed_users=console/allowed_users=anybody/' /etc/X11/Xwrapper.config #---------------------------------------------------# # Step 4 - create policies exceptions .... #---------------------------------------------------# echo /bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m" /bin/echo -e "\e[1;33m! Creating Polkit File...Proceeding... # \e[0m" /bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m" echo sudo bash -c "cat >/etc/polkit-1/localauthority/50-local.d/45-allow.colord.pkla" <<EOF [Allow Colord all Users] Identity=unix-user:* Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile ResultAny=no ResultInactive=no ResultActive=yes EOF #---------------------------------------------------# # Step 5 - Enable Extensions .... #---------------------------------------------------# echo /bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m" /bin/echo -e "\e[1;33m! Install Extensions Dock...Proceeding... # \e[0m" /bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m" echo if [[ "$version" != *"Ubuntu 20.04"* ]]; then gnome-shell-extension-tool -e ubuntu-dock@ubuntu.com gnome-shell-extension-tool -e ubuntu-appindicators@ubuntu.com fi; echo #---------------------------------------------------# # Step 6 - Credits .... #---------------------------------------------------# echo /bin/echo -e "\e[1;36m#-----------------------------------------------------------------------#\e[0m" /bin/echo -e "\e[1;36m# Installation Completed\e[0m" /bin/echo -e "\e[1;36m# Please test your xRDP configuration....\e[0m" /bin/echo -e "\e[1;36m# Written by Griffon - April 2018 - Ver 0.2 - Std-Xrdp-Install-0.2.sh\e[0m" /bin/echo -e "\e[1;36m#-----------------------------------------------------------------------#\e[0m" echo
若讀者不想複製上面這一長串的shell script的話,則可以使用下面的指令,將此shell script下載到要建立RDP桌面協定與GNOME桌面環境的目標主機上:
wget https://gist.githubusercontent.com/peter279k/259f71b3a8cef3aa66e9af90e6800f2b/raw/c373ddee0d407dac850dc326c268e5df6d8c93f1/Std-Xrdp-install-0.2.sh
遠端桌面連線測試
當執行完上述的shell script之後,接著將主機重新開機,並確定3389的port number沒有被IPTable或是防火牆擋住,並可以使用下面的指令來確定3389的port number已經有服務監聽在此port number 上了。
netstat -ntlp | grep 3389
若有服務已經監聽在上述的port number上的話,則執行上述的指令之後,則會出現下列的結果:
lee@lee-VirtualBox:~$ netstat -ntlp | grep 3389 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp6 0 0 :::3389 :::* LISTEN -
接著,可以使用Windows遠端桌面,輸入此虛擬機器的IP位址,預設如果沒有打上後面的port number的話,則會預設以3389這個port number來進行遠端桌面的連線,相關的連線資訊頁面範例如下:
接著,按下上述截圖的”連線”按鈕之後,接著就會看到下面的截圖:
這時候,就輸入登入的使用者帳號與密碼,接著按下OK的按鈕之後,就會使用GNOME桌面環境登入進去了,登入成功之後的結果如下圖所示:
下面這個截圖是登入Ubuntu 20.04的GNOME桌面環境的結果:
下面這個是登入Ubuntu 18.04的GNOME桌面環境的結果:
如此一來,就完成了使用RDP遠端桌面連線協定並安裝GNOME桌面環境進行遠端桌面操作的教學了。
若要調整Gnome桌面環境的介面,則可以再安裝下列的套件:
sudo apt-get install gnome-tweaks
若要讓xrdp使用者可以讀取憑證檔案,則可以使用下列的指令將xrdp使用者加入到ssl-certs群組中。
sudo adduser xrdp ssl-cert
補充資料
若一開始的Ubuntu 20.04與Ubuntu 18.04沒有安裝桌面環境並執行上述的Bash script的話,則執行之後還需要再執行下列的指令:
sudoapt-get update sudo apt-get install gnome-shell-extensions sudo apt-get install gnome-sessions
結論
筆者用過了很多可以遠端桌面的方式的協定,像是X2GO,RDP以及VNC等,每個遠端桌面連線的協定以及方式都各有優缺點,在筆者看來,RDP是支援複製貼上幾乎是最完整的,可以雙向的支援複製與貼上的動作之外,還可以支援UTF-8中文的雙向複製貼上,其他像是VNC還有X2GO等,都無法完美的支援中文的複製與貼上,往往無法使用,或者是容易貼上去之後會是亂碼。
其他的比較,像是遠端桌面操作的流暢度,筆者個人認為上述這三種都差不多,因為遠端桌面的操作流暢度,其最主要的原因還是跟遠端桌面連線的雙方之網路速度是否快速。取決於畫面的流暢度以及高或低延遲的結果。
參考資料
- https://gist.github.com/peter279k/59587eac765d9c3c4573634bf298db9e
- https://www.azureunali.com/linux-ubuntu-18-04-xrdp-remote-desktop-config-problem
- http://c-nergy.be/blog/?p=11868
- https://www.answertopia.com/ubuntu/ubuntu-remote-desktop-access-with-vnc
- https://blog.devgenius.io/install-xrdp-server-on-ubuntu-7088583bc01
- https://gist.githubusercontent.com/peter279k/259f71b3a8cef3aa66e9af90e6800f2b/raw/c373ddee0d407dac850dc326c268e5df6d8c
- https://linuxconfig.org/how-to-install-gnome-on-ubuntu-18-04-bionic-beaver-linux