爛泥:學習ubuntu遠程桌面(二):遠程桌面會話管理

本文首發於爛泥行天下ubuntu

在上一篇文章中,咱們講解了如何給ubuntu安裝遠程桌面及其配置,這篇文章咱們再來說解下有關ubuntu遠程桌面會話的問題。緩存

1、問題描述ssh

在咱們使用ubuntu遠程桌面時,會常常遇到這樣的問題。在鏈接遠程桌面時,我打開的是會話A,我在會話A下處理一些工做的事情。因爲本身不當心把這個遠程桌面給關閉了,或者今天工做完畢關閉該遠程桌面會話。等再進行鏈接遠程桌面時,發現ubuntu會給出一個新的遠程桌面會話B,而不是咱們剛剛鏈接過的那個會話A,或者是昨天鏈接的那個會話A。ide

以上這個問題,咱們在實際的工做中是常常遇到的。學習

那麼咱們該如何解決這個問題呢?或者換一種說法,咱們該如何再次鏈接到上一次的遠程桌面會話A呢?加密

注意:本篇文章中的ubuntu遠程桌面所有是基於XRDP協議。spa

2、ubuntu遠程桌面的原理debug

要解決以上的問題,咱們就要了解基於xrdp協議的ubuntu遠程桌面與vncserver之間的關係。rest

其實有關ubuntu遠程桌面的原理,咱們在上一篇文章《爛泥:學習ubuntu遠程桌面(一):配置遠程桌面》中已經提到過一些,基於XRDP方式的遠程桌面鏈接是須要vncserver的支持日誌

爲何須要vncserver的支持呢?是由於咱們在經過3389端口鏈接ubuntu遠程桌面時,xrdp會把全部經過3389端口數據都轉發到vncserver的端口上,同時vncserver只監聽127.0.0.1這個地址,因此vncserver的端口是不對外開放的。

除此以外,vncserver還爲每一次遠程桌面會話分配一個系統端口,注意這個端口很重要。

若是咱們要鏈接上一次的遠程桌面會話A的,咱們只須要鏈接會話A所在vncserver端口便可。

那麼咱們如何才能鏈接和查看這個vncserver端口呢?這就須要咱們修改xrdp的相關配置。

爲何要講解這個原理?是由於只有咱們理解了這個原理,那麼咱們才能很容易的解決ubuntu遠程桌面會話的問題,並且也能很容易的理解,咱們對xrdp配置文件的相關修改。

3、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

clip_p_w_picpath001

sesman.ini配置文件,內容以下:

[Globals]

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 系統日誌記錄等級

4、鏈接遠程桌面

如今咱們來經過遠程桌面來鏈接ubuntu,以下:

clip_p_w_picpath002

注意:圖中標記出來的端口號

遠程桌面鏈接進入後,打開終端建立一個文件test,以下:

clip_p_w_picpath003

test建立完畢後,而後關閉這個遠程桌面鏈接。

注意:爲了下面的演示效果,建立該文件的界面,我沒有關閉。

此時咱們再經過ssh登陸進入ubuntu,查看此時vncserver所使用的端口,以下:

netstat –tunlp

ps -ef |grep 1673

clip_p_w_picpath004

經過上圖,咱們能夠知道目前這個會話,vncserver使用的是5912這個端口。

如今咱們修改下xrdp的配置文件xrdp.ini,以下:

sudo vi /etc/xrdp/xrdp.ini

clip_p_w_picpath005

以上修改完畢後,咱們要從新啓動xrdp,以下:

sudo /etc/init.d/xrdp restart

clip_p_w_picpath006

重啓完畢後,咱們再次鏈接遠程桌面,以下:

clip_p_w_picpath007

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

遠程桌面進去後,以下:

clip_p_w_picpath008

經過上圖,咱們能夠很明顯的看出,咱們確實鏈接到了上次本關閉的那個遠程桌面界面。

PS:若是不知道每一次的鏈接的端口的話,咱們也能夠經過上查看用戶的xrdp日誌進行查看。具體步驟,以下:

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

clip_p_w_picpath009

經過xrdp日誌查看用戶啓動xrdp的pid。

而後再根據pid,查看啓動的xrdp進程,以下:

ps -ef |grep 1693

clip_p_w_picpath010

經過上圖,基本能夠看出此xrdp進程所使用的是5912端口。

爲了更清晰的確認端口號,使用netstat命令,以下:

netstat -tunlp

clip_p_w_picpath011

經過上圖,能夠很明顯的看出pid爲1693的xrdp,使用的是5912 端口。

到此有關ubuntu遠程桌面會話的問題所有結束。

相關文章
相關標籤/搜索