UOS_远程桌面_xrdp_Xorg_x11vnc_remmina_rdesktop_krdc_vinagre
转载注明来源: 本文链接 来自osnosn的博客,写于 2022-09-13.
参考
- cpu 飞腾 D2000,统信UOS。
- 系统版本 1043,1050。
区别
- 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,就能恢复。 - 总之,系统多建几个用户。实体机可能会登录的用户,别在xrdp登录。xrdp登录的用户,别在实体机登录。
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。一个操作,一个看。
两人一起操作,也行,只是会打架。
RDP客户端
- remmina-1.3.3 版,连接win10的远程桌面,会失败。估计版本太低,支持不好。
- remmina-1.4.8 版,rdp连接win10很好,ssh,vnc,使用都正常。(2022-09)
只是ssh不支持port forward功能。
rdp连win10后,复制/粘贴文件,没测试。不知道行不行。 - remmina-1.4.10 版, uos-20(1050), rdp连接win10可以,通过ssh通道连接win10也可以。
但连接win_server2016,xrdp+Xorg (无论是否通过ssh通道) 都不行(连接失败,报错:检查安全协议协商)。
只好改用 rdesktop (2024-08) - rdesktop-1.8.6, 连接win10, win_server2016, xrdp+Xorg 都没问题。
不支持ssh通道。但支持 tsocks 或 proxychains (2024-08)
rdesktop 只能用命令行启动,连接成功后,会弹出图形桌面。
如:rdesktop -g 1400x900 -r primaryclipboard IP:port
以1400x900的分辨率连接windows的RDP, 并激活剪贴板。
有个桌面的前端 grdesktop,屏幕分辨率只能选择几个固定的组合,不能自定义。
grdesktop的桌面前端,有个ssh tunnel,本质是用ssh连接远程服务器,并执行远端的rdesktop。
还是命令行好用。 - 其他客户端
- vinagre-3.22.0 支持 ssh, spice, rdp, vnc。
中文名叫"远程桌面查看器",屏幕分辨率支持自定义。
spice,vnc支持ssh隧道(没测试); rdp不支持代理,不支持tsocks,proxychains。(2024-08) - krdc-18.04.1 据说支持 rdp, vnc。
支持自定义屏幕分辨率。
krfb 和 org.kde.www.krfb 可以启动一个 VNC 服务器,另一人用krdc连接,用于屏幕共享会话。(没测试)
【如何在 KDE Plasma 桌面进行屏幕共享】
krdc 本质是调用 xfreerdp 连接,不支持代理,不支持tsocks,proxychains. (2024-08) - 【Linux和Windows间的远程桌面访问】,
【Linux VNC Viewer客户端】
- vinagre-3.22.0 支持 ssh, spice, rdp, vnc。
其他
- 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】。 - 如果出现错误
unknown terminal type tmux-256color
,
检查ncurses-term
是否安装。用apt install ...
安装,可解决。 - ventoy 在 arm64 上启动。除debian-netinst成功,其他都失败。(2024-06)
- debian-12.5.0-arm64-netinst.iso ,526MB,可以启动安装,第二终端的shell,没有mount,vim
- alpine-standard-3.20.0_rc1-aarch64.iso ,210MB,无法启动,normal,grub 都不行.
- Armbian_24.5.1_Uefi-arm64_bookworm_current_6.6.31_minimal.img ,3.5GB,可以启动mormal,但无法正常挂载root,有busybox可用,可以mount,vi.
- deepin-desktop-community-23-preview-arm64.iso ,3.3GB,启动失败
- openwrt-23.05.3-armsr-armv8-generic-ext4-combined.img ,230MB,无法识别,直接退回ventoy菜单
- openwrt-22.03.2-armvirt-64-generic-ext4-combined-efi.img ,140MB,无法识别,直接退回ventoy菜单
- uos-livetools-desktop-20230811_arm64.iso ,3.5GB,可用启动,无法挂载root,有busybox(ash)可用,有mount,vi
- archboot-2024.08.21-02.33-6.10.6-1-aarch64-ARCH-aarch64.iso 328MB,能启动,不能挂载rootfs,能mount,无vi,vim,nano.sed,
- Armbian_24.5.3_Rpi4b_bookworm_current_6.6.35_minimal.img 1.3GB,不能启动。
- ventoy在arm机器上,不支持 vhd,qcow2,raw格式的镜像启动。
- gcp_alpine-3.20.2-aarch64-uefi-tiny-metal-r0.raw 324MB,手工改后缀为img,启动失败。
- ventoy-1.0.99-livecd.iso ,186MB,非arm镜像
- 连续输入密码错误后,提示等待时间超长,如何解决
修改/var/lib/deepin/authenticate/limit-states.json
, 重启服务。 - localectl list-locales 查看列表。
apt install locales-all - 参考【man异常退出“exited with status 159”,提示“bad system call”】
manpagesman man
报错,man: nroff: Bad system call
原因是man-2.8.x 与 linux 的 SECCOMP 机制有冲突。
设置export MAN_DISABLE_SECCOMP=1
即可。 - 远程连接桌面,当显示到桌面的时候,所需流量比较大,影响体验。可以把 桌面和锁屏的背景图修改为简单的体积小的图片。
上网找几张极简桌面图片,支持jpg和png,copy到/usr/share/wallpapers/deepin/
目录中。
然后在桌面空白处,点击右键,修改桌面背景,即可。
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/ .