烂泥:学习ubuntu远程桌面(二):远程桌面会话管理

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

在上一篇文章中,我们讲解了如何给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远程桌面会话的问题全部结束。


本文转自 烂泥行天下 51CTO博客,原文链接:http://blog.51cto.com/ilanni/1663351

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
Ubuntu
ubuntu 安装 todesk 远程桌面
需要先安装 ubuntu-desktop 桌面: sudo apt install -y ubuntu-desktop
2241 0
|
3月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
279 2
|
3月前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
5735 3
|
19天前
|
JSON Ubuntu 开发者
ubuntu 22安装lua环境&&编译lua cjson模块
通过上述步骤,可以在 Ubuntu 22.04 系统上成功安装 Lua 环境,并使用 LuaRocks 或手动编译的方式安装 lua-cjson 模块。本文详细介绍了每一步的命令和操作,确保每一步都能顺利完成,适合需要在 Ubuntu 系统上配置 Lua 开发环境的开发者参考和使用。
87 13
|
15天前
|
监控 关系型数据库 MySQL
Ubuntu24.04安装Librenms
此指南介绍了在Linux系统上安装和配置LibreNMS网络监控系统的步骤。主要内容包括:安装所需软件包、创建用户、克隆LibreNMS仓库、设置文件权限、安装PHP依赖、配置时区、设置MariaDB数据库、调整PHP-FPM与Nginx配置、配置SNMP及防火墙、启用命令补全、设置Cron任务和日志配置,最后通过网页完成安装。整个过程确保LibreNMS能稳定运行并提供有效的网络监控功能。
|
26天前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
532 12
|
2月前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
467 50
|
2月前
|
Ubuntu
ubuntu和debian 的安装包dpkg管理命令对安装包进行安装,查询,卸载
Ubuntu dpkg 软件包管理命令概览:安装、卸载、查看和配置软件包。包括解决依赖、强制卸载、列出及过滤已安装包、查看包详情等操作。
79 10
|
2月前
|
Ubuntu API 开发工具
PSOPT在Ubuntu22.04下的安装
通过上述步骤,可以在Ubuntu 22.04下成功安装并配置PSOPT。PSOPT是一个功能强大的工具,适用于解决各种最优控制问题。确保在安装前满足系统要求,并仔细按照步骤操作,可以避免大多数常见问题。通过MATLAB与PSOPT的结合,您可以更高效地处理复杂的控制问题,并获得准确的解决方案。
39 5
|
2月前
|
Ubuntu 网络协议 关系型数据库
超聚变服务器2288H V6使用 iBMC 安装 Ubuntu Server 24.04 LTS及后续系统配置
【11月更文挑战第15天】本文档详细介绍了如何使用iBMC在超聚变服务器2288H V6上安装Ubuntu Server 24.04 LTS,包括连接iBMC管理口、登录iBMC管理界面、配置RAID、安装系统以及后续系统配置等步骤。
278 4