因為實驗服務器需要遠程提供給研一童鞋使用,這兩天折騰了一下Linux的遠程桌面,在此記錄總結一下。服務器系統為Lubuntu 16.04
遠程登錄到Linux
方案一:簡單使用——x11vnc
單用戶的情況下,使用x11vnc是最簡單的方法,詳細設置過程可以參看這篇文章,該文提供了自動配置腳本。這里不再贅述。
注意事項:
- 腳本最后有一段關機命令,注意根據需求修改或者注釋掉
- x11vnc和Lubuntu的light-locker鎖屏程序用沖突,詳見bug,自動鎖屏后,VNC會黑屏,無法進入桌面。
我的解決方案是sudo apt autoremove light-locker
,不用鎖屏程序了,或者換成其他自己喜歡的
方案二:多用戶登錄——xrdp
對於多用戶登錄使用的情況,推薦使用xrdp。使用VNC也可以實現多用戶登錄方案,可參考教程。相比xrdp,VNC方案在安全性方面稍差,配置也更麻煩,我按照教程沒有成功配置,感興趣的童鞋可以折騰一下。
具體配置工作如下:
sudo apt install xrdp
安裝xrdp- 在需要遠程登錄的用戶的home目錄下,修改
~/.xsession
文件,添加桌面session啟動命令。
如Xfce桌面添加:xfce4-session
,(**注意:Xfce在vnc下有bug,tab補全功能無法使用,解決方法參見鏈接),如Lubuntu添加:lxsession -e LXDE -s Lubuntu
- 注意檢查
/etc/xrdp/startwm.sh
最后一行為. /etc/X11/Xsession
- 啟動xrdp服務,
sudo sysemctl start xrdp
- 設置xrdp服務開機自啟,
sudo systemctl enable xrdp
xrdp連接效果展示:
可直接使用Windows遠程連接,此處可在連接設置中調整遠程屏幕分辨率。
連接后登錄界面
成功連接后界面
xrdp后續配置
20180419更新
默認配置的xrdp,每次遠程連接會創建新的會話,這樣就不能繼續上一次會話了。可以通過修改配置文件,添加Reconnect選項來解決(附:參考資料1,參考資料2)。
在/etc/xrdp/xrdp.ini
文件末尾添加如下內容:
[xrdp8]
name=Reconnect
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=ask5910
這樣在下次登錄的時候,可以選擇Reconnect選項,配置中設置了默認的端口號5910,使用netstat -tunlp
命令可以看到已有xrdp進程使用的端口,在重連時根據實際情況修改。
/etc/profile中設置不生效
實際使用中發現,/etc/profile
在本地生效,遠程就不生效。解決方法如下:
- vnc服務器啟動時讀取
~/.vnc/xstartup
,可以在該文件中添加相關配置 - 在.bashrc中添加source /etc/profile可解決,但是會造成本地的設置重復的問題
Linux遠程登錄到Windows
方案一:rdesktop
該方案只需要在Windows上設置允許遠程桌面連接即可,注意取消勾選網絡級別身份驗證。
Linux下命令示例:rdesktop [ip] -f -u [user name] -p [passwd] -r sound:local
rdesktop也可以遠程連接開啟xrdp服務的Linux機器。連接Windows10需要1.8.3版本的rdesktop。
文件共享與其他優化
具體可參考使用rdesktop來在Windows和Linux之間共享數據
rdesktop -u username a.b.c.d -p my-password -g 1200x900 -x 0x80 -r sound:local -r disk:LinuxPictures=/home/username/Pictures
其中-x
優化字體平滑,-r sound
和-r disk
需要同時設置才能適合共享文件路徑生效。
優點:
- 傳輸效率高,可傳輸聲音
- 隱私性好,遠程機器的顯示器不會顯示正在操作的內容。
缺點:
- 只支持OpenGL 1.1版本,無法運行很多OpenGL圖形相關程序,如部分游戲。
方案二:vnc-viewer
該方案在Windows上安裝realvnc connect並登錄賬號即可,免費版realvnc connect無法通過ip直連,vnc-viewer只可以登錄賬號才能發現主機。
優點:
- 就是遠程操作桌面,除了延遲,和本機沒有區別
- 相比rdesktop方案,對圖形相關的程序支持更好,所以可以遠程玩游戲了
缺點:
- 無法傳輸聲音,VNC協議不支持該功能
- 遠程機器的屏幕會顯示正在進行的操作,VNC直接傳輸的屏幕畫面,所以隱私性,安全性差點