创建x11vnc系统服务

创建x11vnc系统服务

操作系统:GNU/Linux Debian 9 和 Cinnamon DE。

既然我们设法得到Debian 服务器上运行的 VNC, 谢谢GAD3R又到了让 VNC 成为常规服务的时候了。

我希望它自启动以来一直运行,而无需在运行时通过 SSH 连接到服务器:

x11vnc -rfbauth ~/.vnc/passwd

另外,我不想运行单独的 Cinnamon 会话,我想直接查看主屏幕上的内容或您所说的任何内容,并实时操作该会话。

答案1

与 Vlastimil 自己的解决方案类似,但有一些其他细节:(来自带有 systemd 的 Cinnamon VNC 服务器

创建文件/etc/systemd/system/x11vnc.service

[Unit]
Description=VNC Server for X11
Requires=display-manager.service
After=syslog.target network-online.target ##optional for better performance
Wants=syslog.target network-online.target ##optional for better performance

[Service]
ExecStart=/usr/bin/x11vnc -display :0 -rfbauth /etc/x11vnc.pwd -shared -forever -o /var/log/x11vnc.log
ExecStop=/usr/bin/x11vnc -R stop
Restart=on-failure
RestartSec=2

[Install]
WantedBy=multi-user.target

生成并设置 VNC 密码(替换 MY_PASSWORD)

x11vnc -storepasswd MY_PASSWORD /etc/x11vnc.pwd

最后:

systemctl daemon-reload
systemctl enable x11vnc
systemctl start x11vnc

答案2

首先,最好将密码文件复制到 下/etc/,如下所示:

sudo cp ~/.vnc/passwd /etc/vnc.passwd

这也确保了其所有权rootrw访问权,正如以下所确认的:

$ ll /etc/vnc.passwd

-rw------- 1 root root 8 Nov  3 04:00 /etc/vnc.passwd

其次,我们必须自己创建服务文件:

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

而我想出的最简单的解决方案是它包含:

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/vnc.passwd -rfbport 5900 -shared

[Install]
WantedBy=multi-user.target

请注意,虽然它是迄今为止最简单的服务文件,但它甚至不支持停止或重新启动,我自己还需要弄清楚这一点。

免责声明:手册页相当冗长,也许我犯了一些严重的错误,例如这里的安全错误。使用风险自负。

sudo systemctl enable vnc.service
sudo systemctl daemon-reload

您只需重新启动机器即可。


顺便说一句,在客户端,您可能需要从服务器复制密码文件,这样您就不必每次连接时都输入密码,并定义一些类似于以下内容的别名:

alias vnc-server='(vncviewer 192.168.0.xxx:5900 -passwd /home/UserName/.vnc/server.passwd > /dev/null 2>&1 &)'

这样它就不会淹没你的终端。

相关内容