我使用的是 Ubuntu 19.04。我希望 Ubuntu 计算机上的 VNC 服务器在启动过程中打开;我没有插入显示器。我希望能够远程运行完整的 Ubuntu 桌面。
我已经设法让我的 SSH 服务器正常工作,而且我还可以让我的 x11vnc 服务器显示在我的 Mac VNC 客户端上。
但是,只有当我手动登录 Ubuntu 并运行命令时,这才有效
x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5900 -share
我可以在 Mac 上创建 SSH 隧道并使用 localhost:5900 连接进行连接。
接下来,我尝试让 x11vnc 在启动过程中打开,所以我执行了以下操作。
sudo nano /lib/systemd/system/x11vnc.service
我保存了以下文本(123 是我的 gdm UID 号)
[Unit] Description=Start x11vnc at startup. After=multi-user.target [Service] Type=simple ExecStart=/usr/bin/x11vnc -loop -forever -bg -rfbport 5900 -xkb -noxrecord -noxfixes -noxdamage -shared -norc -auth /run/user/123/gdm/Xauthority -rfbauth /etc/x11vnc.pass [Install] WantedBy=multi-user.target
我运行了以下命令
sudo systemctl enable x11vnc.service sudo systemctl daemon-reload sudo systemctl start x11vnc.service
我重新启动但没有登录我的 Ubuntu 计算机。
我连接到 SSH 并在 Mac 上成功创建了隧道。
我尝试连接到 VNC 服务器,但失败了。
然后我手动登录我的 Ubuntu 计算机。
我尝试连接到VNC服务器,成功连接,但黑屏。
所以我可以看出,该服务仅在我手动登录 Ubuntu 会话时启动。
有办法实现我想要实现的目标吗?我也愿意使用另一台服务器;我只使用 x11vnc,这样我就不必安装新桌面。
答案1
运行 VNC 服务器有两种方法:
- 与物理控制台并行运行 - 您的 VNC 会话是独立的,您看不到物理控制台用户可以看到的内容。
- 与物理控制台集成:显示器是共享的,您可以离开物理座位并通过 VNC 连接到同一会话,反之亦然。
物理控制台通常受 xauth 保护。如何将VNC服务器与其集成取决于您的显示管理器。我会用光DM举个例子。
Lightdm 创建一个文件/run/lightdm/root/
,您可以告诉 x11vnc 像这样使用它:-display :0 -auth '/run/lightdm/root/:0'
或者,该-findauth
选项可能适用于众所周知的显示管理器。
所以不要尝试启动 systemd 服务。首先使用各种选项手动启动 x11vnc,看看是否可以连接。
另外,不要尝试编辑,/lib/systemd/system/x11vnc.service
因为它会在包更新时被覆盖。创建副本/etc/systemd/system/
,甚至更好地仅覆盖所需的设置/etc/systemd/system/x11vnc.service.d/custom.conf
我的工作x11vnc.service
:
[Unit]
Description=VNC Server for X11
Requires=graphical.target
After=graphical.target
[Service]
ExecStart=/usr/local/bin/x11vnc-lightdm
[Install]
WantedBy=graphical.target
/usr/local/bin/x11vnc-lightdm
:
#!/bin/bash
OPTS=
exec /usr/bin/x11vnc \
$OPTS \
-rfbauth /root/.vnc/passwd -forever -loop -display :0 -auth '/run/lightdm/root/:0'