据我所知,一切都配置正确。服务文件如下:
[Unit]
Description=Start x11vnc at startup
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -display :0 -forever -loop -noxdamage -repeat -rfbauth /etc/x11nvc.pass -rfbport 5900 -shared
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
密码存储在/etc/x11vnc.pass
using中sudo x11vnc -storepasswd /etc/x11vnc.pass
。我已经重新加载了守护进程:sudo systemctl daemon-reload
并启用了服务:sudo systemctl enable x11vnc
,并启动了该服务sudo systemctl start x11vnc
。
重新启动后,该服务运行得很好,但是当我尝试使用 VNC 查看器访问它时,输入正确的密码后,我只是收到一个password check failed
错误:
问题在于:当我转到机器本身并打开 x11vnc 实用程序时,一旦我检查按钮Allow Connections
,一切都会正常工作。问题是,这是一个无人值守的信息亭面板,我们不能每次重新启动时都这样做......因为它位于国家的另一边。
系统是 Debian 10.13 Buster,尚未运行防火墙。
有人可以指出我缺少什么吗?
答案1
之后很多经过测试,我发现有两个主要问题可以解决这个问题:
从 x11vnc 或任何其他设备中删除先前 VNC 配置的所有痕迹。尤其要确保从路径中删除所有与 VNC 相关的文件
~/.config/...
。重新运行
x11vnc -storepasswd
并使用建议的路径。由于某种原因,即使在服务文件中指定了它,当文件passwd
位于建议路径中时,x11vnc 的工作也会更加一致。
我知道有些人会说这个问题可以通过全新安装来解决,但是,由于现有的设置和配置已在运行的系统上就位,因此擦除是不可行的。由于我们已部署到 10 台计算机,因此之后使用清理脚本来修复问题就很简单了。我希望这对其他人有用,这样他们就不必像我一样浪费几天的时间烦恼。