如何设置重用现有会话的xrdp会话?


57

我一直在尝试使用xrdp精确地设置RDP终端服务器,并且在获取有效的配置时遇到了很大的麻烦。当用户登录时,我需要它连接到该用户现有的会话(如果存在),否则将启动一个新的会话,并且任何已启动的会话都必须启动LXDE。我需要对默认配置进行哪些更改才能使其正常运行?


在我的XRDP配置上(除了我在桌面会话上运行Unity并在远程会话上运行Unity2D之外),以用户身份登录会自动选择他们的旧会话。每个用户每次连接都获得一个新会话吗?
agc93

我在互联网上找到的最佳解释/解决方案可以在以下位置找到:c-nergy.be/blog/?p=2879尝试一下,希望此信息对您有所帮助
gyest 2013年

Answers:


46

我也遇到了同样的问题,我只是找到了一个简单的解决方案。我最初只是使用标准过程安装了xrdp:

apt-get install xrdp

之后,关于您的xrdp.ini文件的所有内容都位于此处:

/etc/xrdp/xrdp.ini

要打开和编辑xrdp的配置文件,请使用:

sudo nano /etc/xrdp/xrdp.ini

默认情况下,第一个xrdp会话处理脚本如下所示:

[xrdp1]
name=sesman-vnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

重要的是port=-1,这使xrdp总是寻找可用的端口进行连接。如果您在此处设置固定端口,则xrdp将始终返回并连接到同一会话。我换了我的,所以看起来像这样:

[xrdp1]
name=customsessionname
lib=libvnc.so
username=myusername
password=ask
ip=127.0.0.1
port=5912

就是这样,我认为您只需将更port=-1改为即可摆脱困境port=5912。我的xrdp始终使用同一端口重新连接到现有会话。


2
该解决方案对我来说效果很好,但是我应该指出,即使其他人在该会话下登录,连接到同一台计算机的任何人也将获得相同的会话。
VeeTheSecond

7
不过,只有在已经存在会话的情况下,它才起作用。第一次进入,没有会话,因此它无法连接到端口5912。–
stu

4
有同样的问题..似乎默认情况下,它尝试使用5911port打开连接(在xrpd连接时会注意到它)。所以我从port = -1更改为port = ask5911。默认情况下使用这种方式5911,但是在连接时输入用户名/密码时可以更改该端口(因此在发生错误时无需重新配置任何内容。)
Maxym 2015年

1
此行为严格取决于vnc服务器的实现。在centos下,我使用的是tigervnc,它总是加入现有会话或使用port = -1设置创建一个会话。但是,在ubuntu下,默认值是tightvncserver,它没有相同的行为。只需使用vnc实现(如果有)。
Denys S.

1
默认端口为5910,见askubuntu.com/a/527975/592751
佩迪T.

16

我想改善现有答案。投票最多的答案是编辑xrdp.ini文件以将端口更改为固定值,以代替-1通配符以查找打开的端口。

我试过了,但是第一次连接时出错,所以最终切换回该-1值。沮丧很快就解决了,尽管问题仍然没有恢复,所以我再次查看了ini文件。

对我有用的,而实际上我只是好奇的是:

编辑 /etc/xrdp/xrdp.ini

[xrdp1]该位置,port=-1我注意到用户名和密码设置为ASK。如果设置port=ask,将在登录提示符下为您提供选项,其中包含用户名和密码以选择端口。

我发现安装最简单的解决方法不是设置其他软件包,而是要设置ask选项,而是使用用户名和密码登录到端口-1上的FIRST会话(如果我还没有运行)。
断开会话连接后,要恢复现有会话,请始终登录以下默认端口:5910,您将恢复现有会话,直到重新启动远程计算机或注销时结束会话为止。

总结一下:

  • 编辑xrdp.ini档案
  • port = ask
  • 从远程计算机连接,如果没有现有会话,则在登录时指定端口 -1
  • 要恢复会话,请输入默认值 5910

为我工作。虽然我不会记得5910的发展。
Vesanto

7
我能够成功将条目更改为:[xrdp1]。。。port = ask5910这默认将端口设置为5910,因此您不必像Vesanto所说的那样记住它(我也永远不会记住它,Vesanto!),但是如果您想产生一个新的桌面会话,还可以选择更改它在端口5911上。我在Ubuntu 16.04上对此进行了测试。
hoekma

2
^这也是我发现的最佳解决方案。
Nacht

在刚启动的Rpi3上,我使用端口-1启动了一个新会话,然后我进入了另一台计算机并使用端口5910-它选择了相同的会话。当您在一台计算机上移动事物时,您会看到另一件事。
SDsolar '17

如果您再次执行此操作,但是将其端口号设置为-1,则会为您提供一个新会话。
SDsolar

7

我不想成为一个只删除链接的人,但是我按照这里的指南进行操作,效果非常好。现在,我可以从Linux和Windows主机登录到RDP会话,如果我以前已经登录,则可以将我重新连接到旧会话。这是找到的最佳安装指南。不幸的是,与从源头进行安装相比,标准软件包安装引起的问题要多得多。

该链接的作者还制作了一个自动工具来安装和配置它,但是我没有尝试过,所以要小心。

希望对您有所帮助。


感谢您提供链接。这是否意味着xrdp没有可用的deb软件包退出?
1

我前一段时间确实看到过,但是在较新版本的Ubuntu中无法正常工作。据我所知,在Ubuntu 10.04之后的版本上,没有适用于XRDP的.deb软件包。当然很高兴被证明是错误的,因为这种方法令人失望。
agc93 2012年

检查我的解决方案,它对ubuntu 12 64bit脚本是超级自动的http://askubuntu.com/questions/190838/how-to-install-x11rdp-on-ubuntu-12-04/190855#190855

我认为对这个问题有意义的是.xsession在您的主目录中创建您自己的文件。例如,如果你使用GNOME桌面,运行echo gnome-session >> ~/.xsession
artificerpi

4

问题是xrdp并不总是连接到同一端口。如果没有,并且您忘记了端口号,则可以登录ssh会话并通过以下方式找出端口号

netstat -tulpn | grep vnc

你会得到类似以下内容

tcp        0      0 127.0.0.1:5911          0.0.0.0:*               LISTEN      5365/Xvnc

然后您知道5911是您连接的端口。


2

首次连接到远程桌面时,在带有xrdp框的登录屏幕上,应该有一个下拉框,从此处选择“ vnc-any”,然后输入计算机的IP地址和密码,但将端口保留在是的,这应该有所帮助:)


看起来像最简单的一种,对我有用。大。没有复杂的安装,编译等操作
josef


1

1.修改xrdp.ini:

sudo vi /etc/xrdp/xrdp.ini

2.更改port=ask-1连接规则中的端口设置:

[xrdp1]
name=sesman-Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=ask-1

3.重新启动xrdp服务

sudo service xrdp restart

通过远程桌面登录时,应该看到以下图片。 在此处输入图片说明

1.首次登录时,您可以看到此端口号。范例:5912: 在此处输入图片说明

如果忘记了此端口号,则可以使用以下命令进行检查:

netstat -peant | grep 59 | grep Xvnc

2.您可以通过端口号重新连接上一个会话。 在此处输入图片说明


参考:http : //c-nergy.be/blog/? p= 5305


0

我在Debian机器上遇到了这个问题。使用X11RDP-o-Matic构建xrdp 0.7软件包。在升级到systemd之前,xrdp会话重新连接工作正常。

查看流程树,我可以看到这些会话不再是的子级xrdp-sesman。原来是使用systemd时的权限问题。Google 找到了可解决此问题的补丁

您如何确定工作正常的重新连接?运行ps axf并查看的过程树xrdp-sesmanX11rdp, xrdp-chansrv, xrdp-sessvc应该都作为一个孩子跑。如果不是,xrdp-sesman将不知道如何重新连接到会话。

这是工作时的样子:

良好的xrdp会话过程


0

这就是我所做的。确保安装了tigervnc-server,以便我们可以使用Xvnc。使用默认配置启动VNC会话(我实际上遵循了TigerVNC的Arch Linux安装指南)。然后将Xrdp配置为每次都使用该VNC会话。还要将TigerVNC设置为在启动时启动。这是我的xrdp.ini文件中唯一的VNC部分:

[vnc-any]
name=vnc-any
lib=libvnc.so
ip=localhost
port=5901
username=na
password=YOURPASSWORD
#pamusername=asksame
#pampassword=asksame
#pamsessionmng=127.0.0.1
#delay_ms=2000

-1

这个UbuntuForum线程看起来很有用-我自己还没有测试过-但是我已经复制了此处给出的解决方案来完成此答案。

RealVNC设置

1.卸载默认的Ubuntu VNC服务器(Vino):

转到:系统->管理-> Synaptic软件包管理器搜索“ Vino”软件包,标记为“删除”,然后应用。

2.安装TightVNC和XRDP:

在使用Synaptic软件包管理器时,请为“ tightvnc”软件包使用seacrh(请注意,不要使用“安装seacrh xtightvnc ”),并标记为要安装。同样,搜索“ xrdp”软件包,并标记为“安装”。应用。PS:如果需要,您可以丢弃不需要的任何其他“ vnc”软件包!

3. XRDP的配置(可选)

打开一个终端并输入以下三个命令:

 cd /etc/xrdp
 cp xrdp.ini xrdp.ini.bak 
 sudo gedit /etc/xrdp/xrdp.ini

删除Xrdp2-Xrdp6部分,仅保留Xrdp1部分。您的xrdp.ini应该如下所示:

[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1

[xrdp1]
name=RDP_To_TightVNC
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

4.连接

重新启动系统,您就可以连接了!

要从另一台Ubuntu计算机连接,请使用:应用程序-> Internet->终端服务器客户端,键入Ubuntu VNC计算机的IP,使用RDPv5或RDP,单击连接!

要从基于Windows的计算机进行连接,请使用:开始->运行-> mstsc,键入Ubuntu VNC计算机的IP,然后单击连接。

连接后,使用您的Ubuntu用户帐户凭据(u / n和p / w)并远程登录到桌面。


你真的测试过了吗?看来您刚刚复制并粘贴了逐字链接。如果您确实要复制和粘贴,请在回答中确认来源。
fossfreedom

@fossfreedom不,我尚未测试过,但试图提供帮助。顺便说一句,我已经在中提到了来源this may help you
拉胡尔·维尔帕拉

关于您的出处和答案的准确性,您也许应该更加明确。看到我的编辑。
fossfreedom
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.