登录前无法连接到 x11vnc 服务器

登录前无法连接到 x11vnc 服务器

我已经在 ubuntu 15.10 上安装了 x11vnc。基于:

Remmina 在用户登录之前无法执行 VNC 远程桌面会话

我创建了一个新文件:/etc/init/x11vnc.conf我的服务器包含:

start on login-session-start
script
x11vnc -display :0 -auth /var/run/lightdm/root/:0 -loop -forever -safer -shared -ultrafilexfer -bg -o /var/log/x11vnc.log -rfbauth /home/moore/.vnc/passwd -rfbport 5903 -http -users moore -nowireframe
end script

我现在已经重启我的服务器并尝试使用 Remmina 从另一台 Ubuntu 机器通过 RDP 连接到它:

在此处输入图片描述

但我得到的只是:

在此处输入图片描述

我也尝试过遵循这个指南:

http://seb.so/vnc-from-boot-without-logging-in-ubuntu-lubuntu-xubuntu-and-mint-lmde/

同样的结果。

更新:

如下所述我现在尝试运行:

x11vnc -display :0 -auth /var/run/lightdm/root/:0 -loop -forever -safer -shared -ultrafilexfer -bg -o /var/log/x11vnc.log -rfbauth /home/moore/.vnc/passwd -rfbport 5903 -http -users moore -nowireframe

从我第一次通过 SSH 连接到服务器的终端。它给了我这个错误:

...disabling -bg in -loop mode error opening logfile: /var/log/x11vnc.log open: Permission denied

但如果我以 root 身份从同一终端执行此操作,它现在就可以正常工作了!但为什么它在机器重启时不会自动执行此操作呢?

请注意,当我以 root 身份对文件进行上述小型手动测试时/var/log/x11vnc.log已创建,因此现在具有以下权限:

-rw-r--r--  1 root              root     12640 Feb 19 00:26 x11vnc.log

但它仍然无法在启动时自动启动。看来在启动时运行脚本的用户不是 root。

更新2:

下面更新的答案解决了这个问题 - 解决了 Ubuntu 15.10 中的问题。

答案1

我能想到的可能阻止您连接的原因只有三件:

  1. 您是否安装了防火墙?您是否解除了对端口 5903 的访问限制?您可以使用 UFW(Ubuntu 中防火墙的 GUI)来执行此操作。
  2. 您是否尝试从网络外部访问服务器?在这种情况下,您还必须转发路由器上的 5903 端口以访问 VNC 服务器(除了第 1 点)。如果您从同一网络连接时收到此错误,请忽略此选项,但从网络外部连接时请记住这一点。
  3. 最后一个,虽然有点傻,但我想说清楚。您是想从同一台计算机连接吗?我认为 x11vnc 不允许环回连接,因此测试时请务必尝试使用其他计算机(或您的手机)。编辑:经过测试,它至少可以与使用 192.168... 本地地址的 Remmina 配合使用。

我的电脑上也使用 x11vnc 服务器,但不同之处在于只有本地主机可以访问它。我还运行 SSH 服务器,这样我就有了一个更安全的连接,一旦用户通过 ssh 连接到您的计算机,他们就可以作为本地主机连接到 VNC 服务器。

我希望这有帮助

编辑

经过一番排查,问题在于 Ubuntu 15.10 没有 upstart,因此 x11vnc 永远不会在启动时运行。相反,您必须创建一个服务并使其在启动时可用。以下是操作方法:

sudo nano /lib/systemd/system/x11vnc.service

将其插入到文件中:

[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
ExecStart=/usr/bin/x11vnc -display :0 -auth guess -loop -forever -safer -shared -ultrafilexfer -bg -o /var/log/x11vnc.log -rfbauth /home/moore/.vnc/passwd -rfbport 5903 -http -users moore -nowireframe
ExecStop=/usr/bin/killall x11vnc

[Install]
WantedBy=multi-user.target

然后你可以使用以下命令启动该服务:

sudo systemctl daemon-reload
sudo systemctl start x11vnc

并使服务在启动时启动:

sudo systemctl enable x11vnc

此解决方案先前由巴别 这里

相关内容