osnosn

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

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 停掉服务。改手工启动。
    /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 &
    
    两个进程分别监听在 5900 和 5901。
  • 开两个 vnc_viewer 连接 这两个端口。
  • 选择"切换用户",就会在这两个vnc窗口切换。一个有显示,一个是黑屏。有意思。
    • 这时候,如果其中一个用户"注销",``/var/run/lightdm/root/` 中就会少一个文件。
      导致刚才手工启动的 x11vnc ,其中一个,不停的报错,重启。因为找不到对应文件了。
  • 暂时没有继续研究下去。估计要好好看看 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;10548;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/ .


posted on 2022-09-13 23:26  osnosn  阅读(5201)  评论(2编辑  收藏  举报