我已经在 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
我能想到的可能阻止您连接的原因只有三件:
- 您是否安装了防火墙?您是否解除了对端口 5903 的访问限制?您可以使用 UFW(Ubuntu 中防火墙的 GUI)来执行此操作。
- 您是否尝试从网络外部访问服务器?在这种情况下,您还必须转发路由器上的 5903 端口以访问 VNC 服务器(除了第 1 点)。如果您从同一网络连接时收到此错误,请忽略此选项,但从网络外部连接时请记住这一点。
- 最后一个,虽然有点傻,但我想说清楚。您是想从同一台计算机连接吗?我认为 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
此解决方案先前由巴别 这里