在 CentOS 上使用 VNC 时经常“掉线(断连)”是比较常见的问题,通常和网络、配置、超时机制、桌面环境有关。下面按「快速排查 → 常见原因 → 对应解决办法」说明。
TigerVNCRealVNCTightVNCVNC 默认有超时机制,尤其使用 systemd 管理的 VNC。
解决方法: 编辑 VNC 服务文件(示例):
sudo vi /etc/systemd/system/vncserver@:1.service
在 ExecStart 中加参数:
ExecStart=/usr/bin/vncserver %i -geometry 1920x1080 -depth 24 -IdleTimeout=0
然后:
sudo systemctl daemon-reload
sudo systemctl restart vncserver@:1
✅ -IdleTimeout=0 表示永不因空闲断开
如果是通过 SSH + VNC 使用:
现象:网络一抖就掉
解决:
编辑:
vi ~/.ssh/config
加入:
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
服务器端 /etc/ssh/sshd_config:
ClientAliveInterval 60
ClientAliveCountMax 3
重启 SSH:
systemctl restart sshd
如果登录后立刻掉:
检查:
vncserver -kill :1
vncserver :1
查看日志:
~/.vnc/*.log
常见问题:
.xstartup 配置错误CentOS 7/8 常见:
检查 .vnc/xstartup:
#!/bin/sh
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
或 GNOME:
exec gnome-session
确保安装了:
yum groupinstall "GNOME Desktop"
如果是云服务器:
✅ 放行 VNC 端口(默认 5901)
firewall-cmd --add-port=5901/tcp --permanent
firewall-cmd --reload
云厂商安全组也要放行。
:1 被多个用户启动vncserver -list
vncserver -kill :1
✅ SSH 隧道 + VNC(最稳)
ssh -L 5901:localhost:5901 user@centos
再用 VNC 连 localhost:5901
✅ 或用 xrdp + Windows 远程桌面(比 VNC 稳)
我可以直接给你可复制的解决方案。