zoukankan      html  css  js  c++  java
  • 烂泥:学习ubuntu远程桌面(二):远程桌面会话管理

    本文由秀依林枫提供友情赞助,首发于烂泥行天下

    在上一篇文章中,我们讲解了如何给ubuntu安装远程桌面及其配置,这篇文章我们再来讲解下有关ubuntu远程桌面会话的问题。

    一、问题描述

    在我们使用ubuntu远程桌面时,会经常遇到这样的问题。在连接远程桌面时,我打开的是会话A,我在会话A下处理一些工作的事情。由于自己不小心把这个远程桌面给关闭了,或者今天工作完毕关闭该远程桌面会话。等再进行连接远程桌面时,发现ubuntu会给出一个新的远程桌面会话B,而不是我们刚刚连接过的那个会话A,或者是昨天连接的那个会话A。

    以上这个问题,我们在实际的工作中是经常遇到的。

    那么我们该如何解决这个问题呢?或者换一种说法,我们该如何再次连接到上一次的远程桌面会话A呢?

    注意:本篇文章中的ubuntu远程桌面全部是基于XRDP协议。

    二、ubuntu远程桌面的原理

    要解决以上的问题,我们就要了解基于xrdp协议的ubuntu远程桌面与vncserver之间的关系。

    其实有关ubuntu远程桌面的原理,我们在上一篇文章《烂泥:学习ubuntu远程桌面(一):配置远程桌面》中已经提到过一些,基于XRDP方式的远程桌面连接是需要vncserver的支持

    为什么需要vncserver的支持呢?是因为我们在通过3389端口连接ubuntu远程桌面时,xrdp会把所有通过3389端口数据都转发到vncserver的端口上,同时vncserver只监听127.0.0.1这个地址,所以vncserver的端口是不对外开放的。

    除此之外,vncserver还为每一次远程桌面会话分配一个系统端口,注意这个端口很重要。

    如果我们要连接上一次的远程桌面会话A的,我们只需要连接会话A所在vncserver端口即可。

    那么我们如何才能连接和查看这个vncserver端口呢?这就需要我们修改xrdp的相关配置。

    为什么要讲解这个原理?是因为只有我们理解了这个原理,那么我们才能很容易的解决ubuntu远程桌面会话的问题,而且也能很容易的理解,我们对xrdp配置文件的相关修改。

    三、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_image001

    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 系统日志记录等级

    四、连接远程桌面

    现在我们来通过远程桌面来连接ubuntu,如下:

    clip_image002

    注意:图中标记出来的端口号

    远程桌面连接进入后,打开终端创建一个文件test,如下:

    clip_image003

    test创建完毕后,然后关闭这个远程桌面连接。

    注意:为了下面的演示效果,创建该文件的界面,我没有关闭。

    此时我们再通过ssh登录进入ubuntu,查看此时vncserver所使用的端口,如下:

    netstat –tunlp

    ps -ef |grep 1673

    clip_image004

    通过上图,我们可以知道目前这个会话,vncserver使用的是5912这个端口。

    现在我们修改下xrdp的配置文件xrdp.ini,如下:

    sudo vi /etc/xrdp/xrdp.ini

    clip_image005

    以上修改完毕后,我们要重新启动xrdp,如下:

    sudo /etc/init.d/xrdp restart

    clip_image006

    重启完毕后,我们再次连接远程桌面,如下:

    clip_image007

    注意:上图中的port端口,我们填写的是5912这个端口,也就是上边那个远程桌面会话vncserver所使用的端口。

    远程桌面进去后,如下:

    clip_image008

    通过上图,我们可以很明显的看出,我们确实连接到了上次本关闭的那个远程桌面界面。

    PS:如果不知道每一次的连接的端口的话,我们也可以通过上查看用户的xrdp日志进行查看。具体步骤,如下:

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

    clip_image009

    通过xrdp日志查看用户启动xrdp的pid。

    然后再根据pid,查看启动的xrdp进程,如下:

    ps -ef |grep 1693

    clip_image010

    通过上图,基本可以看出此xrdp进程所使用的是5912端口。

    为了更清晰的确认端口号,使用netstat命令,如下:

    netstat -tunlp

    clip_image011

    通过上图,可以很明显的看出pid为1693的xrdp,使用的是5912 端口。

    到此有关ubuntu远程桌面会话的问题全部结束。

  • 相关阅读:
    主从复制(多台服务器搭建环境)【十五】
    Linux中kill,pkill,killall和xkill命令汇总讲解
    redis持久化机制【十三】
    守护进程详解及创建,daemon()使用
    【small项目】MySQL第二天早上第一次连接超时报错,解决方法com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
    Redis事务【十二】
    乐观锁和悲观锁的区别
    Redis 命令与连接【十一】
    Redis 配置【十】
    DB_Links创建际删除
  • 原文地址:https://www.cnblogs.com/ilanni/p/4587171.html
Copyright © 2011-2022 走看看