UOS_远程桌面_xrdp_Xorg_x11vnc
转载注明来源: 本文链接 来自osnosn的博客,写于 2022-09-13.
参考
- cpu 飞腾 D2000,统信UOS。
- 系统版本 1043。
区别
- xrdp + Xorg, xrdp 只是一个壳,提供一个远程连接的加密通道。
Xorg 是共享机器的资源。每次连接一个新用户,都会创建一个新的session,创建一个新的桌面。 - x11vnc 是共享的屏幕,远程的操作,实体机能看到,互相同步的。
x11vnc 缺省配置是不加密的。也可以启用tls加密,需要自己改配置。
另外,可能是我的配置不对,多用户切换,会把远程vnc给切黑屏了。实体机显示器正常显示。 - xrdp 缺省为加密连接,耗费流量较小。远程时体验较好。
x11vnc 是传输屏幕的图像,缺省不加密连接。耗费流量大,约为 xrdp的2-3倍。远程比较慢。
局域网使用 x11vnc,可以不考虑 安全性和速度。 - xrdp 可以在客户端设置屏幕分辨率。
x11vnc 是绑定实体机的屏幕,客户端无法改变屏幕分辨率,只能设定缩放比例。
xrdp
- uos 直接装
apt install xrdp
。装好,服务默认就已经启动了。
就能用 win10 的 mstsc.exe 连接了。并且可以多用户连接。- 配置文件
/etc/xrdp/xrdp.ini
中可以修改3389的端口号。restart xrdp 就生效。 - 远程连接时,通过Xorg再次连接。
建议断开前注销用户。否则,间隔一段时间后,再次连接会失败。
kill 掉x-session-manager
,能恢复全新连接,但之前的桌面就没了。
重启机器后,莫名的好了。之前"连接失败"的现象消失了。- 经过测试,直接断开xrdp,锁定后断开,等8小时后再连,桌面都还在,打开的应用也都在。没发现连不回去。
- 注销后断开,再连接,是个全新的桌面。
- 配置文件
- 当实体机未登录任何用户时。远程连接,不影响实体机的显示器的显示,一直显示等待登录。
- 当实体机登录了userAA。远程连接登录 userBB,不影响实体机 userAA 的操作,各自使用各自的桌面。完全不相干。
只是在共享机器的资源(内存,cpu)。连接太多用户,或开太多应用,机器会慢,会卡,甚至死机。 - 远程桌面,连接后,还有一层。这一层有4个选项。
以上的xrdp连接测试,都是用 Xorg 这个选项登录第二层的。
Xorg, Xvnc, vnc-any, neutrinordp-any- Xorg 就是用来登录本机账号/开启会话的。
- Xvnc 好像要和 tigerVNC 配合的。我没装 tigerVNC。
- vnc-any 其实就是个 vnc的客户端。可以登录其他的远程vnc服务。
- neutrinordp-any, 似乎是 rdp 的客户端。但又登录不了win10的远程桌面。不知有什么问题。
切换用户,就出问题了。
- 实体机登录userAA,xrdp也登录userAA,xrdp经过好几分钟等待后,进入黑屏。奇怪的现象就出现了。
实体机桌面还在,点击图标,应用打不开,回头发现,应用其实开到 rdp桌面了。- 实体机注销userAA,xrdp的桌面就回来了。似乎操作正常。
- 这时候退出xrdp,哪怕是注销。实体机点击应用,还是不会出现。再次连接xrdp,发现没桌面,但应用窗口都在。
- 后台
service lightdm restart
,可以恢复。别再用xrdp登录同一个用户了。
- 实体机登录userAA,xrdp登录userBB。
- 如果实体机切换用户到userBB,会卡死。直到xrdp注销用户userBB。
- 如果xrdp切换用户到userAA,界面卡死,没反应了。断开,再连,还是那个卡死的界面。
- 需要后台,杀掉会话,kill
startwm.sh
或者Xsession
或者x-session-manager
,三个进程是派生关系。先找到哪个,杀哪个,后面的自然被杀了。
重新连接xrdp,能恢复。别再切换用户了。
- 如果
service xrdp restart
重启过,登录xrdp也会黑屏,也要杀掉之前的会话,Xsession,就能恢复。
x11vnc
- 【UOS系统中安装x11vnc远程桌面】
- 参考以上文章,安装x11vnc,
apt update; apt install x11vnc
依赖 tk tcl x11vnc-data libvncserver1 .x11vnc -storepasswd /etc/x11vnc.pass
设置密码vim /etc/systemd/system/x11vnc.service
[Unit] Description=x11vnc service After=multi-user.target [Service] Type=simple ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared [Install] WantedBy=multi-user.target
chown 0.0 /etc/systemd/system/x11vnc.service
,改文件所有者。systemctl daemon-reload; systemctl start x11vnc
,启动服务。systemctl enable x11vnc
, 设置开机启动 (这一步我没做)。- 最终我手工执行上面的命令。临时启用一下而已。
- win客户端用 VNC_Viewer, 免费的。【官方下载地址】。
- 用 win 客户端连接,成功。vnc桌面中,鼠标移动,实体机显示器上,鼠标也在同步动。
断开之后,过一段时间再连接,也没有问题。
只使用一个用户,登录,注销,锁定,都 OK。
多用户,就出问题了。
- 再给系统创建一个用户。这时候,系统有两个用户 userAA 和 userBB。
- 先登录 userAA,然后点击"切换用户",这个时候 vnc客户端还OK。
- 点击 另一个用户。实体机显示器没问题。vnc就黑屏了,但并不断开,vnc中什么都操作不了。
去实体机,再选择回第一个用户。vnc的显示又恢复了。 - 发现
/var/run/lightdm/root/
目录中有两个文件:0
和:1
。 systemctl stop x11vnc
停掉服务。改手工启动。
两个进程分别监听在 5900 和 5901。/usr/bin/x11vnc -display :0 -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc/x11vnc.pass -autoport -shared & /usr/bin/x11vnc -display :1 -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc/x11vnc.pass -autoport -shared &
- 开两个 vnc_viewer 连接 这两个端口。
- 选择"切换用户",就会在这两个vnc窗口切换。一个有显示,一个是黑屏。有意思。
- 这时候,如果其中一个用户"注销",``/var/run/lightdm/root/` 中就会少一个文件。
导致刚才手工启动的 x11vnc ,其中一个,不停的报错,重启。因为找不到对应文件了。
- 这时候,如果其中一个用户"注销",``/var/run/lightdm/root/` 中就会少一个文件。
- 暂时没有继续研究下去。估计要好好看看 x11vnc 的文档了。
- 这篇写的不一样,
【uos-win互相远程桌面使用】,
【uos-win互相远程桌面使用】,
其实就是用xrdp的加密通道,套一个不加密的x11vnc。我没做测试。
效果和直接用x11vnc是一样的。只是win这边不用装vnc_viewer,直接用mstsc.exe连接。
用途
- 想多人使用同一台机器的资源,各用各的桌面。互不干涉。就用 xrdp + Xorg。
- 想共享屏幕,教别人操作,帮人远程解决电脑的问题。就用 x11vnc。一个操作,一个看。
两人一起操作,也行,只是会打架。
其他
- remmina-1.3.3 版,连接win10的远程桌面,会失败。估计版本太低,支持不好。
- remmina-1.4.8 版,rdp连接win10很好,ssh,vnc,使用都正常。
只是ssh不支持port forward功能。
rdp连win10后,复制/粘贴文件,没测试。不知道行不行。 - ls带颜色输出时,目录是蓝色,阅读吃力,改一下。
uos 使用的是 256colors 定义。定义文件是 /etc/lscolor-256color。
修改DIR 38;5;105
为48;5;19;38;5;7
,蓝底白字。或48;5;19;38;5;7;1
。
其中:48;5;X背景色,38;5;X前景色,;1高亮。0正常,1高亮,2低亮,3斜体,4下划线,5闪烁,6快闪,7反色,8隐藏,9删除线。
见【装 Debian 的 VM】。
UOS 的防火墙
- 和 debian的一样。只是缺省装好了
iptables
包,默认使用iptables命令。没装nftables
包。 - uos系统的防火墙,默认使用 iptables 命令生成,其实用的是
xtables-nft-multi
命令。
这个命令是把 iptables的规则命令,翻译为 nft规则命令,写入nftables中。 - iptables-legacy 命令是
xtables-legacy-multi
,才是真正的,老的iptables命令。 - 一旦执行过iptables-legacy,内核会加载
iptable_filter
模块。
再执行iptables,就会给出Warning
,说有旧模式的iptables在使用。 - 装上
nftables
包,可以用nft list ruleset
看到所有的规则。
如果用 nft 命令添加过规则后,iptables命令就罢工了。
说规则不匹配,翻译不回来了。提示要用 nft命令。
删掉用nft新添加的规则,就恢复了。
----end----
转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/16690589.html
来自 osnosn的博客 https://www.cnblogs.com/osnosn/ .