一、前言
远程桌面两种方式,xrdp和vnc,各有优缺点,根据自己设备实际情况去使用,有UI界面但是没有显示屏的使用VNC,多人协同开发的使用xrdp
目录
一、前言
二、环境
三、正文
1.xrdp方式
2.vnc方式
四、结语
二、环境
RK3588(linux5.10.66+debian/ubuntu/麒麟是桌面文件系统)
调试笔记本window10,安装常用工具winscp,xshell,finalshell,secureRTP等等
VMware17+Ubuntu20.04源码开发环境(这里就依赖于各个硬件平台的厂家提供资料了)
三、正文
1.xrdp方式
(此方法不能同步嵌入式设备的屏幕到windows的共享桌面端)
安装并启用xrdp服务
sudo apt-get install xrdp xorgxrdp
# 安装桌面环境(选择一个)
# 银河麒麟 UKUI
sudo apt-get install ukui-desktop-environment
# GNOME(这个不好使,黑屏闪退)
sudo apt-get install xubuntu-desktop
# XFCE
sudo apt-get install xfce4 xfce4-goodies
两种界面分别如下:
修改/etc/xrdp/startwm.sh,配置桌面环境
sudo vim /etc/xrdp/startwm.sh
直接替换最后两行:
# 银河麒麟 UKUI
export XDG_SESSION_TYPE=x11
exec ukui-session
# GNOME(这个不好使)
export XDG_SESSION_TYPE=x11
exec gnome-session
# XFCE
exec startxfce4
#!/bin/sh
# xrdp X session start script (c) 2015, 2017 mirabilos
# published under The MirOS Licenceif test -r /etc/profile; then. /etc/profile
fiif test -r /etc/default/locale; then. /etc/default/localetest -z "${LANG+x}" || export LANGtest -z "${LANGUAGE+x}" || export LANGUAGEtest -z "${LC_ADDRESS+x}" || export LC_ADDRESStest -z "${LC_ALL+x}" || export LC_ALLtest -z "${LC_COLLATE+x}" || export LC_COLLATEtest -z "${LC_CTYPE+x}" || export LC_CTYPEtest -z "${LC_IDENTIFICATION+x}" || export LC_IDENTIFICATIONtest -z "${LC_MEASUREMENT+x}" || export LC_MEASUREMENTtest -z "${LC_MESSAGES+x}" || export LC_MESSAGEStest -z "${LC_MONETARY+x}" || export LC_MONETARYtest -z "${LC_NAME+x}" || export LC_NAMEtest -z "${LC_NUMERIC+x}" || export LC_NUMERICtest -z "${LC_PAPER+x}" || export LC_PAPERtest -z "${LC_TELEPHONE+x}" || export LC_TELEPHONEtest -z "${LC_TIME+x}" || export LC_TIMEtest -z "${LOCPATH+x}" || export LOCPATH
fiif test -r /etc/profile; then. /etc/profile
fi#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession# 方案1:自动选择当前桌面环境(推荐)
#if [ -n "$DESKTOP_SESSION" ]; then
# case "$DESKTOP_SESSION" in
# ukui) exec ukui-session ;;
# gnome) exec gnome-session ;;
# xfce) exec startxfce4 ;;
# *) exec /etc/X11/Xsession ;;
# esac
#else
# 方案2:手动指定默认环境(例如UKUI)
# export XDG_SESSION_TYPE=x11
# exec ukui-session
#fi#手动指定默认环境(麒麟UKUI)
export XDG_SESSION_TYPE=x11
exec ukui-session
修后后执行,如果不是调试不用执行
sudo systemctl restart xrdp
加权限
sudo chmod +x /etc/xrdp/startwm.sh
设置开机自启
sudo systemctl start xrdp
sudo systemctl enable xrdp
查xrdp服务状态:
sudo systemctl status xrdp
确保服务状态为active (running)
之后检查防火墙是否开启,如果未安装提示没有防火墙就不用管了
检查 ufw 防火墙状态:sudo ufw status(默认未安装)
检查 firewalld 防火墙状态:sudo firewall-cmd --state(默认未安装)
iptables(较旧的 Linux 发行版):
sudo iptables -L -n | grep 3389
如果没有输出,说明 3389 端口未放行,放行命令:
sudo iptables -A INPUT -p tcp --dport 3389 -j ACCEPT
保存规则(防止重启失效):
sudo iptables-save | sudo tee /etc/iptables/rules.v4
sudo service iptables save
验证端口是否可访问,即使防火墙放行了 3389 端口,仍然可以使用 netstat 或 ss 检查 xrdp 是否在监听:
sudo netstat -tulnp | grep 3389
sudo ss -tulnp | grep 3389
使用finalshell远程桌面
或者电脑WIN+R输入mstsc,连接ip,输入账号密码
两者其实都是调用windows系统自带的远程桌面,一样的
xrdp 默认不支持直接同步显示本地物理屏幕,它的工作机制是创建一个 新的独立桌面会话,而不是直接共享当前用户的已有图形会话(即本地显示器上看到的内容)。这是 xrdp 的架构设计决定的,与协议实现方式有关
2.vnc方式
(此方法能同步,电脑要安装VNC-Viewer)
安装x11vnc
sudo apt install x11vnc -y
设置访问密码,默认密码123就行
x11vnc -storepasswd
启动 x11vnc 共享当前屏幕
x11vnc -display :0 -forever -shared -rfbauth ~/.vnc/passwd
-display :0:绑定到本地屏幕(通过 echo $DISPLAY 确认)。
-forever:保持持久运行。
-shared:允许多客户端连接。
-rfbauth:指定密码文件。
从 Windows 连接,使用 VNC 客户端(如 TigerVNC Viewer 或 RealVNC),地址:目标IP:5900,输入刚设置的密码。
设置开机自启
创建 systemd 服务
sudo vim /etc/systemd/system/x11vnc.service
添加内容
[Unit]
Description=x11vnc Remote Desktop Service
After=display-manager.service[Service]
ExecStart=/usr/bin/x11vnc -display :0 -forever -shared -rfbauth /root/.vnc/passwd
User=root
Restart=always
RestartSec=5[Install]
WantedBy=multi-user.target
启用服务,和设置开机自启
sudo systemctl enable x11vnc
sudo systemctl start x11vnc
查x11vnc服务状态:
sudo systemctl status x11vnc
确保服务状态为active (running)
之后安装VNC-Viewer-7.13.1-Windows_1038_4ffee工具包
配置连接
之后就进入了,与桌面环境一模一样
四、结语
远程桌面,搞起来搞起来,可以在配置设备时都配置,尤其是针对设备实际不接屏幕的,有大用!