我想设置一个无头服务器并从笔记本电脑(Windows)连接到它。它运行的是 Kubuntu 15.04,我按照以下说明安装了 X11vnc:
VNC/服务器 - 让 x11vnc 在任何环境中通过 systemd 自动启动(Vivid+)
重新启动后,该服务已启用并处于活动状态(我想?),但我无法使用 UltraVNC 从笔记本电脑连接。
只有当我跑步时
x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5900 -shared
在终端中,我可以使用 UltraVNC 连接到服务器。
我不想每次访问服务器时都发出此命令。我希望能够在重启后连接到服务器,而无需在服务器上执行任何操作。
知道哪里出了问题吗?
答案1
听起来你没有将 x11vnc 配置为系统服务,这样系统启动时它就会自动启动。我刚刚做了和你一样的事情,而且成功了。执行以下命令,应该可以解决你的问题。
步骤1:设置一个特定于您的用户名的密码,您将使用该密码从远程系统登录 x11vnc。
x11vnc -storepasswd
输入密码并将文件存储到:/home/USERNAME/.vnc/passwd 注意:确保用您的实际用户名替换 USERNAME。
第2步:配置“x11vnc.service”文件,以便系统启动时自动启动 vnc。您可以使用任何文本编辑器,但需要 sudo 权限才能编辑该文件。我在这里的示例中使用了 nano。
sudo nano /lib/systemd/system/x11vnc.service
将以下行复制并粘贴到 nano 中。
[Unit]
Description=Start x11vnc at startup.
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5900 -shared
[Install]
WantedBy=multi-user.target
按“Ctrl-X”退出并保存文件,然后输入“Y”并按“Enter”。再次确保将 USERNAME 替换为您的实际用户名。
步骤3:重新加载服务,以便您的计算机了解您刚刚在上面第 2 步中配置的 x11vnc 服务。并启用 x11vnc 服务。
sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
步骤4:启动 x11vnc 服务。
sudo systemctl start x11vnc
步骤5:庆祝! :-)
结论
按照这些步骤应该启动 x11vnc 并配置您的系统,以便系统和服务管理器 systemd 在每次计算机启动时自动启动 x11vnc。
参考文献:我得出这个答案来自Ubuntu 的 VNC/服务器文档。具体来说,我参考了标题为“x11vnc”和“在任何环境中让 x11vnc 通过 systemd 自动启动(Vivid+)”的部分。我参考的第二部分涉及 Ubuntu Vivid Vervet 15.04。如果您运行的是不同版本的 Debian Linux 发行版,则需要参考 Ubuntu 的 VNC/Server 页面中的正确部分。
答案2
补充 MikeyE 的帖子。我有效地遵循了上述相同的步骤,但它仍然不起作用。它需要添加两个内容。
如果以 root 身份运行,x11vnc 将无法工作。
systemctl
如果您未设置用户/组,则会发生这种情况。在字段下[Service]
添加以下内容:User=<USERNAME> Group=<USERNAME>
执行此操作并重新启动
x11vnc
将会产生一个新的错误(已通过我在#2 中描述的方法修复。执行上述操作后会显示一个新错误。现在您需要一个 -display(或通过 进行设置)。在启动服务之前,
EXPORT
查看这是否是您的问题,如 MikeyE 所述。输入命令“ ”后,然后。它现在对我有用。EXPORT DISPLAY=:0
EXPORT DISPLAY=:0
sudo systemctl restart x11vnc
您将需要一种永久的方式来设置 DISPLAY,因为上面描述的 EXPORT 方法在重新启动时会丢失。对 MikeyE 的帖子进行的上述修改使我能够登录到我的 Ubuntu 安装。