在 Ubuntu 上让 VNC 开机启动,常见做法有几种,取决于你使用的 VNC 服务类型(TigerVNC / TightVNC / RealVNC)以及是否使用 systemd。下面以 TigerVNC / TightVNC + systemd 为例说明(最推荐、最通用)。
sudo apt update
sudo apt install tigervnc-standalone-server tigervnc-common
vncpasswd
(默认密码文件在 ~/.vnc/passwd)
例如为 user1 用户启动 :1 桌面:
sudo nano /etc/systemd/system/vncserver@.service
内容如下(注意修改用户名):
[Unit]
Description=VNC Server (%i)
After=syslog.target network.target
[Service]
Type=simple
User=user1
PAMName=login
PIDFile=/home/user1/.vnc/%H:%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || true'
ExecStart=/usr/bin/vncserver :%i -geometry 1280x720 -depth 24
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service
sudo systemctl start vncserver@1.service
查看状态:
systemctl status vncserver@1.service
✅ 重启后会自动启动 VNC
crontab -e
添加:
@reboot vncserver :1
⚠ 缺点:依赖 X、网络,可能启动失败
~/.config/autostart(仅桌面会话)适合 已登录桌面用户:
nano ~/.config/autostart/vnc.desktop
[Desktop Entry]
Type=Application
Name=VNC Server
Exec=vncserver :1
❌ 不会在无登录时启动
确保 ~/.vnc/xstartup 存在且可执行:
#!/bin/sh
unset SESSION_MANAGER
exec startxfce4
chmod +x ~/.vnc/xstartup
每个用户一个 vncserver@2、@3
✅ 服务器 / 无桌面登录:用 systemd
✅ 桌面环境:autostart
❌ 生产环境:避免 crontab
如果你告诉我:
我可以给你精确配置。