我可以连接到 x11vnc 会话而不让它显示在我的电脑显示器上吗?

我可以连接到 x11vnc 会话而不让它显示在我的电脑显示器上吗?

我有一台运行 Fedora 36 KDE 的台式机。我使用 systemd 服务文件对其进行了设置x11vnc。每当我通过 mac 上的 realvnc 连接到桌面时,桌面的显示器也会打开并镜像我在 realvnc 上执行的操作。有没有办法配置x11vnc为不这样运行?

systemd 服务文件:

[Unit]
Description=x11vnc service
After=display-manager.service network.target syslog.target

[Service]
Type=simple
ExecStart=/bin/bash -c "/usr/bin/x11vnc -display :0 -auth guess -rfbauth /home/user/.vnc/passwd -noxdamage -shared"
#ExecStop=/usr/bin/killall x11vnc
User=user
Group=user
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
  1. 我尝试删除User=Group=,但服务出现错误:
(code=exited, status=1/FAILURE)

如果我首先模拟这个su root,然后运行这个命令,它就会起作用(但我不知道为什么它不适用于 systemd 服务):

/usr/bin/x11vnc -display :0 -auth guess -rfbauth /home/user/.vnc/passwd -noxdamage -shared
  1. 然后我改变了 systemdExecStart来运行它User=Group=注释掉:
/usr/bin/x11vnc -display :1 -auth guess -rfbauth /home/user/.vnc/passwd -noxdamage -shared

还是同样的错误:

(code=exited, status=1/FAILURE)

我现在已经不知道该做什么了,欢迎提出任何意见!

编辑:我将 systemd 文件更改为此,它工作正常,尽管它仍然使用我的桌面显示器镜像 vnc 屏幕。我认为这与设置有关-display :0

[Unit]
Description=x11vnc service
After=display-manager.service network.target syslog.target

[Service]
Type=simple
ExecStart=/bin/bash -c "/usr/bin/x11vnc -display :0 -auth /home/user/.Xauthority -rfbauth /home/user/.vnc/passwd -noxdamage -shared"
#ExecStop=/usr/bin/killall x11vnc
#User=user
#Group=user
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

EDIT1:我把-auth选项改成了$(find /var/run/sddm/ -type f),因为我认为它需要这样才能登录到用户会话。User=并且Group=仍然被注释掉,因为否则会抛出错误。然后将显示编号更改为 1 仍然出错。我现在采取的折衷方法是关闭显示器但保持 HDMI 电缆连接,所以x11vnc仍然认为有一个物理显示器:0。我可能不得不研究x11vnc无头设置。

答案1

我意识到这x11vnc是为了控制你的物理桌面会话,你必须配置 x 以输出到虚拟显示器,以便欺骗x11vnc它认为你正在控制物理会话。我不想那样做。我需要的本质上是一个无头的 vnc 机器。

因此我决定systemctl disable sddm,然后安装tigervnc-server并使用它。

现在,如果我真的需要,我可以在桌面上使用 TTY 控制台,如果 vnc 失败,总会有 ssh。

相关内容