Ubuntu 22.04 桌面上的 x11vnc 似乎坏了

Ubuntu 22.04 桌面上的 x11vnc 似乎坏了

安装 Ubuntu 22.04 的新物理实例会导致出现 Wayland 桌面。我在登录对话框中将其切换为 x11(选择“gear”,选择 xorg)。此解决方案适用于运行 22.04 的虚拟机,但似乎无法修复我的物理设备的任何问题。“连接意外关闭”。如果您有任何建议,请告知。我的 x11vnc 配置与 xinetd 在 20.04 上运行良好。

/etc/xinetd.d/x11vnc

service x11vnc
{
        port            = 5900
        type            = UNLISTED
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = root
        server          = /usr/bin/x11vnc
        server_args     = -inetd -o /var/log/x11vnc.log -display :0 -auth /run/user/1000/gdm/Xauthority -many -bg
        disable         = no
}

答案1

这在 Ubuntu 22.04 上对我有用

删除 WaylandEnable=false 前面的 #,如下所示:

sudo apt install x11vnc
sudo perl -i.bk -pe's/#(WaylandEnable=false)/$1/' /etc/gdm3/custom.conf

重新启动远程计算机以重新启动 X,可能存在更快捷的方法:

sudo shutdown -r now

然后以非 root 用户身份登录身体的远程桌面。

然后通过 ssh 连接到远程:

ssh -L5901:127.0.0.1:5900 me@remote

然后运行这个(注意:1 而不是:0,后者在以前的 ubuntu 中有效)

x11vnc -display :1 -nopw -noxdamage -passwd po -scale 17/17 -ncache 10 &

在本地计算机上的 Remmina 中我将其配置为服务器:

127.0.0.1:5901

答案2

有两种基本方法可以让 x11vnc 提供远程桌面:

  1. 登录机器,然后通过命令行启动 x11vnc

这仅当您具有对机器的物理访问权限时才有效

  1. 创建在机器启动时启动 x11vnc 的启动脚本

这使您可以完全远程访问您的机器,并且在您登录后,登录“欢迎”可用,然后是远程桌面。

由于 Ubuntu 17 (2) 需要运行,因此需要设置一个黑客解决方案,因为“greeter”和“user”使用不同的 X11 DISPLAY,并且 Xorg 服务器实例在不同的用户 ID (uid) 下运行,“greeter”的用户 == gdm,远程桌面的 YOUR_USER_ACCOUNT。

结果是您需要运行两个单独的服务:

  1. “greeter” x11vnc 服务在其自己的 TCP 端口上(我使用 5902)
  2. 用户桌面 x11vnc 服务在其自己的 TCP 端口上(我使用标准端口 5900)

另一个复杂因素是,多年来,Xauthourity 令牌一直位于用户主目录下的 .X11/Xauthority 中,现在它保存在:/run/user//gdm/Xauthority

黑客攻击的结果是需要首先连接到 VNC 端口 5902 以通过“greeter”登录,然后关闭该窗口并通过 VNC 端口 5900 连接到桌面。

这是“greeter”(登录)和桌面的示例 systemd 启动脚本。

GREETER(启动脚本):

$ cat /lib/systemd/system/x11vnc-login.service 
[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
User=gdm    <<=== Ubuntu 21.04 need process DISPLAY owner id
ExecStart=/usr/bin/x11vnc -auth /run/user/126/gdm/Xauthority -forever -loop -repeat -rfbauth /home/gdm/.vnc/passwd -rfbport 5902 -shared -display :0
[Install]
WantedBy=multi-user.target

DESKTOP(启动脚本):

$ cat /lib/systemd/system/x11vnc.service 
[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
User=WHO  <<=== Now the session user
ExecStart=ExecStart=/usr/bin/x11vnc -auth /run/user/1XXX/gdm/Xauthority -forever -loop -noxdamage -repeat -rfbauth /home/WHO/.vnc/passwd -rfbport 5900 -shared -xkb -display :1
#
# Or if you have a problem with keys not working you might
#   need to add: -skip_keycodes CODE,CODE... flag
#   See below for more details
#
[Install]
WantedBy=multi-user.target

添加 systemd 脚本后,您应该启用/启动:

# sudo systemctl enable x11vnc-login
# sudo systemctl enable x11vnc
# sudo systemctl start x11vnc-login
# sudo systemctl start x11vnc

哦,是的,为了使其工作,您必须禁用“Wayland”,因为 x11vnc 仅适用于 X11,而不适用于 Wayland。

通过编辑 /etc/gdm3/custom.conf 并设置 WaylandEnable=false 禁用“Wayland”显示管理器

由于这个问题在每次 Ubuntu 更新时都会“习惯性”地出现,因此我在我的博客中记录了诊断和修复的详细信息(以供将来参考):https://tips.graphica.com.au/ubuntu-and-remote-gnome-desktop/

相关内容