Xrdp服务安装配置实现Linux远程桌面访问

您所在的位置:网站首页 腾讯云服务器安装桌面文件夹 Xrdp服务安装配置实现Linux远程桌面访问

Xrdp服务安装配置实现Linux远程桌面访问

2024-02-23 06:46| 来源: 网络整理| 查看: 265

[TOC]

0x00 基础介绍

Q: 什么是 Xrdp ? 它有何作用 ?

描述: Xrdp 是一个微软远程桌面协议(RDP)的开源实现,它允许你通过图形界面控制远程系统。通过 RDP 你可以登录远程机器,并且创建一个真实的桌面会话就像你登录本地机器一样。

Q: 其它的可视化界面远程访问方式有那些?

描述: 最常见的是通过xrdp和vnc这两种远程桌面协议来进行可视化远程操作。

xrdp和vnc之间区别介绍:

远程协议 xrdp vnc BIOS屏幕显示 能 不能 全彩支持 能 能 更改分辨率 能 能 多显示器 只有一个屏幕 多显示器支持 图像传输 图像传输 图像和图形传输 视频播放支持 不能 GPU加速支持 音频传输 不能 双向语音可以控制 鼠标控制 服务器端控制 服务器端控制 USB传输 不能 USB可以通过网络传输 多桌面支持 支持多人连接 只支持一个桌面 原生的Unit桌面 支持 支持 ``` **XRDP 和 VNC 适用场景:** - XRDP > 适用系统:windows、linux > 网络流量:较小/正常使用100-200k左右 > 适用场景:由于在色彩、音频、usb及本地磁盘映射方面较好`非常适用于虚拟桌面`; - VNC > 适用系统:windows、linux > 网络流量:较小,常用100k左右 > 适用场景:主要用于linux的服务器的管理,由于无声音和usb传输,不满足于虚拟桌面的使用 Tips : 用Xrdp是因为比VNC好很多,磁盘共享这种附带功能不说,关键是RDP的算法,用起来要比VNC这RFB快VNC采用的RFB算法,下面放一下他们俩的主要区别: * RFB是在服务器端将窗口在显存中画好之后将图像传给客户端,客户端只充当一个图像解码显示的角色; * RDP则将画图的工作交给了客户端,服务器需要了解客户端显示能力的具体情况,以便作出相应调整。 RFB主要传图像,RDP主要传指令。就一般应用而言,RFB数据量太大,RDP对客户端要求较高,因此RFB适用于瘦客户端,RDP适用于低速网络。 --- ## 0x01 安装桌面环境 描述: CentOS(精简版) / Ubuntu 服务器通常使用命令行进行管理,并且默认没有安装桌面环境, 如果你正在运行 Ubuntu / CentOS 桌面版,忽略这一步。 目的: 配置一个远程桌面,允许你从你的本地机器通过一个简单易用的图形界面来管理你的 Ubuntu 20.04 服务器。 ### Ubuntu 系列 在 Ubuntu 源仓库有很多桌面环境供你选择; - (1) Gnome : 它是 Ubuntu 20.04 的默认桌面环境, 界面炫酷但是比较耗费资源,通常是在桌面版本中使用。 - (2) xfce : 它是快速,稳定,并且轻量的桌面环境,使得它成为远程服务器的理想桌面。 PS : Xrdp 使用默认的 X Window 桌面环境(`Gnome or XFCE`)。 --- ## 0x02 Xrdp 安装使用 ### How to Install xrdp on Ubuntu ? **Ubuntu 20.04 Gnome 桌面** ```bash # (1) 更新源 nano /etc/apt/sources.list apt-get update && apt-get upgrade # (2) 安装Ubuntu Gnome桌面与XRDP apt-get install -y ubuntu-desktop && apt-get install -y xrdp # sudo apt install xubuntu-desktop # 安装 Xfce # (3) 查看xrdp服务 sudo systemctl status xrdp # (4) 默认情况下 Xrdp 使用/etc/ssl/private/ssl-cert-snakeoil.key,它仅仅对“ssl-cert” 用户组成语可读。 # 运行下面的命令将 xrdp 用户添加到这个用户组:(缺省未采用ssl) # sudo adduser xrdp ssl-cert # (5) 重启 Xrdp 服务使得修改生效: sudo systemctl restart xrdp

Tips: 安装完成后即可使用Windows远程桌面工具登录Ubuntu, 非常注意并不需要在家目录中创建.xsession的文件并输入xfce4-session等命令信息(坑);

Ubuntu 20.04 xfce4 桌面 描述: 安装与使用方式与上面相差不大。

apt-get update apt install xfce4 xfce4-goodies tightvncserver xrdp # - 以及在 vi /etc/X11/Xsession首行添加xfce4-session # 创建~/.xsession 和 ~/.xsessionrc $ echo "xfce4-session" > ~/.xsession $ D=/usr/share/xfce4:/usr/share/xubuntu:/usr/local/share $ D=${D}:/usr/share:/var/lib/snapd/desktop:/usr/share $ cat ~/.xsession xfce4-session test -x /etc/X11/Xsession && exec /etc/X11/Xsession exec /bin/sh /etc/X11/Xsession配置防火墙

描述: Xrdp 守护程序在所有的网络接口上监听端口3389。如果你在你的 Ubuntu 服务器上运行一个防火墙,你需要打开 Xrdp 端口。

# 如果你想允许从任何地方访问(由于安全原因,这种方式不鼓励),运行: sudo ufw allow 3389 # 想要允许从某一个指定的 IP 地址或者 IP 范围访问 Xrdp 服务器,例如192.168.33.0/24,你需要运行下面的命令: sudo ufw allow from 192.168.33.0/24 to any port 3389

TIPS: 如果想要增加安全你可以考虑 Xrdp 仅仅监听 localhost,并且创建一个 SSH 隧道,将本地机器的3389端口到远程服务器的同样端口之间的流量加密。

0x04 入坑&出坑问题1.Sesmal connect ok , sending login info to session mananger, please wait… Login failed for display 0

错误信息: Windows 连接 CentOS XRDP 错误信息 login failed for display 0

错误原因: 输入的操作系统密码有误,注意此处输入密码不是cat /etc/xrdp/xrdp.ini中的username、password而是操作系统中的;

CSDN.login failed for display 0CSDN.login failed for display 0

CSDN.login failed for display 0

其他解决办法:

# 方式1.将 allowed_users=console 改为 anybody sudo vi /etc/X11/Xwrapper.config allowed_users=anybody问题2.Windows 连接 Xdrp(Ubuntu 20.04 server) 出现闪退,报错信息 xsession: line 1: xfce4-session: command not found

错误信息:

~$ ls -rw------- 1 106 Jan 5 05:56 .Xauthority -rw-r--r-- 1 16K Jan 5 05:56 .xorgxrdp.11.log -rw-r--r-- 1 17K Jan 5 05:53 .xorgxrdp.11.log.old -rw-rw-r-- 1 12 Jan 5 05:55 .xsession -rw------- 1 4.3K Jan 5 05:56 .xsession-errors ~$ cat .xsession-errors # Xsession: X session started for weiyigeek at Tue 05 Jan 2021 05:53:45 AM UTC # dbus-update-activation-environment: setting DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus # dbus-update-activation-environment: setting DISPLAY=:11.0 localuser:weiyigeek being added to access control list # 登录的用户 # dbus-update-activation-environment: setting GTK_MODULES=gail:atk-bridge # dbus-update-activation-environment: setting QT_ACCESSIBILITY=1 # ... /home/weiyigeek/.xsession: line 1: xfce4-session: command not found # Xsession: X session started for weiyigeek at Tue 05 Jan 2021 05:56:14 AM UTC # dbus-update-activation-environment: setting DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus # dbus-update-activation-environment: setting DISPLAY=:11.0 localuser:weiyigeek being added to access control list # 登录的用户 # dbus-update-activation-environment: setting GTK_MODULES=gail:atk-bridge # ..... # dbus-update-activation-environment: setting XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop /home/weiyigeek/.xsession: line 1: x11-session: command not found

错误原因: Ubuntu 20.04 Server 中默认采用 Gnome 桌面如果配置了没有安装的第三方桌面软件到.xsession将会出现改问题

# Unity 桌面(老版本) echo unity> ~/.xsession # ubuntu-desktop 原始桌面 echo gnome-session > ~/.xsession # xubuntu-desktop xfce4桌面 echo xfce4-session > ~/.xsession问题3.dconf-CRITICAL **: unable to create file ‘/run/user/1000/dconf/user’: Permission denied. dconf will not work properly.

问题信息:

$ cat .xsession-errors Xsession: X session started for at Sun May 21 22:03:26 CST 2017 X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 109 (X_ChangeHosts) Value in failed request: 0x5 Serial number of failed request: 6 Current serial number in output stream: 8 localuser:fred being added to access control list (xfce4-session:41354): dconf-CRITICAL **: unable to create file '/run/user/1000/dconf/user': Permission denied. dconf will not work properly.

问题描述: 新装的 ubuntu 的 利用 xrdp 登录 xfce4 桌面 普通用户登陆不了,而root管理员却能登陆。

问题解决: 家目录中权限问题

/home/fred# chown -R fred:fred *.*问题4.Windows 桌面连接后远程使用Terminal时 ,Tab键无法自动补全。

描述: 默认情况下是使用ctrl+i的, Tab键被占用作为其他的快捷键; 解决办法: 在windows manager(窗口管理器)中,keyboard 里将用到 Super + Tab 的快捷键 clear 掉即可。

问题5.远程桌面进去之后没有菜单栏

解决办法: 右键面板-> 面板首选项-> backup and restore -> apply configuration图标

问题6.运行一段时间后,出现xrdp_mm_process_login_response: login failed

问题原因:远程桌面没有正确关闭,虽然在windows 系统关闭远程桌面连接,但是在里linux上的进程还在运行,导致连接数量达到上限出现问题。 问题解决:通过设置sesman.ini文件内的MaxSessions参数解决

vi /etc/xrdp/sesman.ini # 修改会话设置最大会话限制 MaxSessions=50 # 每次断开连接时linux都会关闭会话进程 KillDisconnected=1问题7.出现 password failed, error - problem connecting

问题信息:如果你的log也有类似 X server for display 10 startup timeout和another Xserver is already active on display 10。

# 信息1 sudo vim /var/log/xrdp-sesman.log # xrdp-sesman.log下错误为: # [INFO ] starting Xvnc session... # [ERROR] X server for display 10 startup timeout[INFO ] starting xrdp-sessvc - xpid=2924 - wmpid=2923 # [ERROR] X server for display 10 startup timeout # [ERROR] another Xserver is already active on display 10 # [DEBUG] aborting connection...

问题原因: tightvnc 出现问题的版本跟X字体有冲突,导致连接Xserver出错。

解决办法:

apt-get purge tightvnc xrdp apt-get install tightvncserver xrdp # 重启启动xrdp服务并通过命令 netstat -tnl 查看监听状态 3350 3389 5910 # 一般这三个端口处于Listen

如果日志里跟第一种情况不同,可以考虑如下方式解决sudo vim /etc/xrdp/sesman.ini添加如下两行:

# 解决办法 [Xvnc] param8=-SecurityTypes param9=None

Tips: 若上述问题还是无法解决可卸载xrdp服务进行重装,并如上进行同样的操作,修改sesman.ini文件。

卸载xrdp的命令为:

sudo apt-get purge xrdp sudo apt-get purge tightvncserver问题8.xrdp service fails to start,xrdp用systemctl start启动时发现失败,查看错误信息、日志也没啥明确提示

解决办法:

touch /var/log/xrdp.log chown xrdp:adm /var/log/xrdp.log chmod 640 /var/log/xrdp.log systemctl start xrdp && systemctl status xrdp问题9.黑屏问题Xfce4会自动锁屏

描述: 当你远程桌面断开连接一阵子在恢复,会发现黑屏,这时候不管teamviewer还是什么都连不了的。 解决办法: 所以需要关掉自动锁屏,在第一次远程连接上桌面后,左上角Applications-->Settings-->Power Manager, Security标签,”Automatically lock the session”–>”Never” 从不锁定,就OK了。

问题10.ubuntu利用xrdp登陆xfce4桌面vscode无法启动

问题信息:

# 问题1.vscode版本信息 code --version # 1.58.2 c3f126316369cd610563c75b1b1725e0679adfb3 x64 # 问题2.在linux上安装vscode后,发现普通用户可以使用,管理员用户启动不了,报错如下: ou are trying to start Visual Studio Code as a super user which isn’t recommended. If this was intended, please specify an alternate user data directory using the --user-data-dir argument. # 问题3.发生系统错误无法写入程序用户数据请确保以下目录可写 - ~/.config/code - ~/.vscode/extensions - /usr/lib

问题解决:

# 问题1-2.解决 # 参考地址: https://github.com/Microsoft/vscode/issues/3451 sudo sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' /usr/lib/x86_64-linux-gnu/libxcb.so.1 # 启动的时候,设置下–user-data-dir参数即可,如下所示: ./code --user-data-dir="~/.vscode" # 问题3.解决 sudo chown -R weiyigeek:root /usr/lib问题11.利于XRDP远程登陆切换使用xfce桌面报Environment variable XDG_SESSION_PATH not set. Is LightDM running? 错误。

错误信息:

** (light-locker:2769): ERROR **: 08:09:59.625: Environment variable XDG_SESSION_PATH not set. Is LightDM running?

问题解决: 禁用 light-locker

$ sudo cp /usr/bin/light-locker /usr/bin/light-locker.orig $ sudo tee /usr/bin/light-locker


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3