在 Debian 上让 VNC“保活”(不断线、不休眠、开机自启、断线自动重连/重启),通常从服务保活、会话保活、网络保活三方面入手。下面以最常见的 TigerVNC / RealVNC / x11vnc 为例说明。
sudo apt install tigervnc-standalone-server
创建用户服务:
mkdir -p ~/.config/systemd/user
~/.config/systemd/user/vnc.service
[Unit]
Description=VNC Server
After=graphical.target
[Service]
ExecStart=/usr/bin/vncserver :1 -geometry 1920x1080 -alwaysshared -fg
Restart=always
RestartSec=3
[Install]
WantedBy=default.target
启用:
systemctl --user daemon-reexec
systemctl --user enable --now vnc.service
关键点
Restart=always → 崩了自动拉起-fg → 前台运行,systemd 能管住--user → 不依赖 rootsudo apt install x11vnc
systemd 服务示例:
[Unit]
Description=x11vnc
After=display-manager.service
[Service]
ExecStart=/usr/bin/x11vnc -display :0 -forever -shared -repeat -rfbauth /home/user/.vnc/passwd
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl enable --now x11vnc
参数说明
-forever → 客户端断开不退出-repeat → 防止空闲断线Restart=always → 保活核心sudo apt install xss-lock
xset s off
xset -dpms
xset s noblank
写入 ~/.xsessionrc 永久生效。
gsettings set org.gnome.desktop.screensaver lock-enabled false
gsettings set org.gnome.desktop.session idle-delay 0
如果你用 ssh -L 连 VNC:
~/.ssh/config
Host debian
ServerAliveInterval 30
ServerAliveCountMax 3
/etc/ssh/sshd_config
ClientAliveInterval 30
ClientAliveCountMax 3
vncserver :1 -alwaysshared -fg
systemd Restart=always
xset s off -dpms
如果你愿意,可以告诉我:
我可以直接给你一份可复制的 systemd 文件。