天天看點

學習ubuntu遠端桌面(二):遠端桌面會話管理一、問題描述二、ubuntu遠端桌面的原理三、XRDP配置檔案詳解四、連接配接遠端桌面

在我們使用ubuntu遠端桌面時,會經常遇到這樣的問題。在連接配接遠端桌面時,我打開的是會話a,我在會話a下處理一些工作的事情。由于自己不小心把這個遠端桌面給關閉了,或者今天工作完畢關閉該遠端桌面會話。等再進行連接配接遠端桌面時,發現ubuntu會給出一個新的遠端桌面會話b,而不是我們剛剛連接配接過的那個會話a,或者是昨天連接配接的那個會話a。

以上這個問題,我們在實際的工作中是經常遇到的。

那麼我們該如何解決這個問題呢?或者換一種說法,我們該如何再次連接配接到上一次的遠端桌面會話a呢?

<b>注意:本篇文章中的ubuntu遠端桌面全部是基于xrdp協定。</b>

要解決以上的問題,我們就要了解基于xrdp協定的ubuntu遠端桌面與vncserver之間的關系。

為什麼需要vncserver的支援呢?<b>是因為我們在通過3389端口連接配接ubuntu遠端桌面時,xrdp會把所有通過3389端口資料都轉發到vncserver的端口上,同時vncserver隻監聽127.0.0.1這個位址,是以vncserver的端口是不對外開放的。</b>

<b>除此之外,vncserver還為每一次遠端桌面會話配置設定一個系統端口,注意這個端口很重要。</b><b></b>

<b>如果我們要連接配接上一次的遠端桌面會話a的,我們隻需要連接配接會話a所在vncserver端口即可。</b>

那麼我們如何才能連接配接和檢視這個vncserver端口呢?這就需要我們修改xrdp的相關配置。

為什麼要講解這個原理?是因為隻有我們了解了這個原理,那麼我們才能很容易的解決ubuntu遠端桌面會話的問題,而且也能很容易的了解,我們對xrdp配置檔案的相關修改。

xrdp配置檔案有兩個,分别是/etc/xrdp目錄下的xrdp.ini和sesman.ini檔案。

xrdp.ini配置檔案,關鍵部分在globals,具體内容如下:

[globals]

bitmap_cache=yes 位圖緩存

bitmap_compression=yes 位圖壓縮

port=3389 xrdp監聽的端口(重要)

crypt_level=low 加密程度(low為40位,high為128位,medium為雙40位)

channel_code=1

max_bpp=24 xrdp最大連接配接數

[xrdp1]

name=sesman-xvnc xrdp的連接配接模式

lib=libvnc.so

username=ask

password=ask

ip=127.0.0.1

port=-1

注意:在xrdp.ini配置檔案中,需要注意max_bpp參數,這參數定義xrdp最大的連接配接數。

要解決本文所提出的問題,我們隻需要修改sesman-xvnc模式中的port參數。修改後的prot參數,如下:

cat /etc/xrdp/xrdp.ini

學習ubuntu遠端桌面(二):遠端桌面會話管理一、問題描述二、ubuntu遠端桌面的原理三、XRDP配置檔案詳解四、連接配接遠端桌面

sesman.ini配置檔案,内容如下:

listenaddress=127.0.0.1 監聽ip位址(預設即可)

listenport=3350 監聽端口(預設即可)

enableuserwindowmanager=1 1為開啟,可讓使用者自定義自己的啟動腳本

userwindowmanager=startwm.sh

defaultwindowmanager=startwm.sh

[security]

allowrootlogin=1 允許root登陸

maxloginretry=4 最大重試次數

terminalserverusers=tsusers 允許連接配接的使用者組(如果不存在則預設全部使用者允許連接配接)

terminalserveradmins=tsadmins 允許連接配接的超級使用者(如果不存在則預設全部使用者允許連接配接)

[sessions]

maxsessions=10 每個使用者最大會話數

killdisconnected=0 是否立即關閉斷開的連接配接(如果為1,則斷開連接配接後會自動登出)

idletimelimit=0 空閑會話時間限制(0為沒有限制)

disconnectedtimelimit=0 斷開連接配接的存活時間(0為沒有限制)

[logging]

logfile=./sesman.log 登陸日志檔案

loglevel=debug 登陸日志記錄等級(級别分别為,core,error,warn,info,debug)

enablesyslog=0 是否開啟日志

sysloglevel=debug 系統日志記錄等級

現在我們來通過遠端桌面來連接配接ubuntu,如下:

學習ubuntu遠端桌面(二):遠端桌面會話管理一、問題描述二、ubuntu遠端桌面的原理三、XRDP配置檔案詳解四、連接配接遠端桌面

注意:圖中标記出來的端口号

遠端桌面連接配接進入後,打開終端建立一個檔案test,如下:

學習ubuntu遠端桌面(二):遠端桌面會話管理一、問題描述二、ubuntu遠端桌面的原理三、XRDP配置檔案詳解四、連接配接遠端桌面

test建立完畢後,然後關閉這個遠端桌面連接配接。

注意:為了下面的示範效果,建立該檔案的界面,我沒有關閉。

此時我們再通過ssh登入進入ubuntu,檢視此時vncserver所使用的端口,如下:

netstat –tunlp

ps -ef |grep 1673

學習ubuntu遠端桌面(二):遠端桌面會話管理一、問題描述二、ubuntu遠端桌面的原理三、XRDP配置檔案詳解四、連接配接遠端桌面

通過上圖,我們可以知道目前這個會話,vncserver使用的是5912這個端口。

現在我們修改下xrdp的配置檔案xrdp.ini,如下:

sudo vi /etc/xrdp/xrdp.ini

學習ubuntu遠端桌面(二):遠端桌面會話管理一、問題描述二、ubuntu遠端桌面的原理三、XRDP配置檔案詳解四、連接配接遠端桌面

以上修改完畢後,我們要重新啟動xrdp,如下:

sudo /etc/init.d/xrdp restart

學習ubuntu遠端桌面(二):遠端桌面會話管理一、問題描述二、ubuntu遠端桌面的原理三、XRDP配置檔案詳解四、連接配接遠端桌面

重新開機完畢後,我們再次連接配接遠端桌面,如下:

學習ubuntu遠端桌面(二):遠端桌面會話管理一、問題描述二、ubuntu遠端桌面的原理三、XRDP配置檔案詳解四、連接配接遠端桌面

注意:上圖中的port端口,我們填寫的是5912這個端口,也就是上邊那個遠端桌面會話vncserver所使用的端口。

遠端桌面進去後,如下:

學習ubuntu遠端桌面(二):遠端桌面會話管理一、問題描述二、ubuntu遠端桌面的原理三、XRDP配置檔案詳解四、連接配接遠端桌面

通過上圖,我們可以很明顯的看出,我們确實連接配接到了上次本關閉的那個遠端桌面界面。

ps:如果不知道每一次的連接配接的端口的話,我們也可以通過上檢視使用者的xrdp日志進行檢視。具體步驟,如下:

sudo cat /var/log/xrdp-sesman.log

學習ubuntu遠端桌面(二):遠端桌面會話管理一、問題描述二、ubuntu遠端桌面的原理三、XRDP配置檔案詳解四、連接配接遠端桌面

通過xrdp日志檢視使用者啟動xrdp的pid。

然後再根據pid,檢視啟動的xrdp程序,如下:

ps -ef |grep 1693

學習ubuntu遠端桌面(二):遠端桌面會話管理一、問題描述二、ubuntu遠端桌面的原理三、XRDP配置檔案詳解四、連接配接遠端桌面

通過上圖,基本可以看出此xrdp程序所使用的是5912端口。

為了更清晰的确認端口号,使用netstat指令,如下:

netstat -tunlp

學習ubuntu遠端桌面(二):遠端桌面會話管理一、問題描述二、ubuntu遠端桌面的原理三、XRDP配置檔案詳解四、連接配接遠端桌面

通過上圖,可以很明顯的看出pid為1693的xrdp,使用的是5912 端口。

到此有關ubuntu遠端桌面會話的問題全部結束。