操作系统: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
这也确保了其所有权root
和rw
访问权,正如以下所确认的:
$ 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 &)'
这样它就不会淹没你的终端。