Ubuntu下TigerVNC权限设置指南
TigerVNC运行时应使用普通用户(而非root),以降低安全风险。若需新建用户,可通过以下命令创建并赋予sudo权限:
sudo adduser vncuser # 创建用户(替换vncuser为实际用户名)
sudo usermod -aG sudo vncuser # 将用户加入sudo组
设置用户密码并完成个人信息配置(如全名、邮箱等)。
使用vncpasswd命令为用户设置VNC专用密码(与系统密码分离),密码长度建议8位以上:
vncpasswd
按提示输入并确认密码,可选择是否设置只读密码(通常选N,避免未授权操作)。
VNC启动脚本(~/.vnc/xstartup)需具备可执行权限,否则无法正常启动桌面环境:
chmod +x ~/.vnc/xstartup
若修改过脚本内容(如调整桌面环境),需重新赋予权限。
-localhost yes参数,仅允许本机通过SSH隧道访问,避免直接暴露端口:vncserver -localhost yes :1 # :1对应5901端口
ssh -L 5901:localhost:5901 vncuser@your_server_ip
之后通过VNC客户端连接localhost:5901,而非直接连接服务器IP。若系统启用UFW防火墙,需放行VNC对应的端口(默认5901对应显示号:1):
sudo ufw allow 5901/tcp # 放行TCP端口
sudo ufw reload # 重新加载防火墙规则
可通过sudo ufw status验证规则是否生效。
若将TigerVNC配置为系统服务(/etc/systemd/system/vncserver@.service),需在服务文件中明确指定运行用户及组,避免权限冲突:
[Service]
Type=forking
User=vncuser # 替换为实际用户名
Group=vncuser # 替换为实际用户组
WorkingDirectory=/home/vncuser
PIDFile=/home/vncuser/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || true
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1920x1080 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i
修改后需重新加载systemd并重启服务:
sudo systemctl daemon-reload
sudo systemctl restart vncserver@1.service # :1对应显示号
通过sudo systemctl status vncserver@1.service查看服务状态。
-localhost no直接暴露VNC端口,优先通过SSH隧道访问。sudo apt update && sudo apt upgrade。~/.vnc/*.log日志文件排查问题(如桌面环境启动错误)。