在 CentOS 上 VNC 报错,排查一般按**“看日志 → 看服务状态 → 看配置 → 看端口/防火墙”**的顺序来。下面给你一套实用排查方法。
CentOS 常见两种:
以 tigervnc 为例。
systemctl status vncserver@:1.service
或(老版本):
service vncserver status
常见状态:
failed → 看日志active (running) → 客户端问题not found → 没装或配置名不对journalctl -xe
journalctl -u vncserver@:1.service
cat ~/.vnc/hostname:1.log
常见错误:
Permission deniedX startup failedCannot open displayFont directory not foundcat ~/.vnc/xstartup
最小可用配置(GNOME):
#!/bin/sh
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
或:
exec gnome-session
改完权限:
chmod +x ~/.vnc/xstartup
cat /etc/systemd/system/vncserver@:1.service
重点看:
User=ExecStart=/usr/bin/vncserver %i -geometry 1280x720改完重新加载:
systemctl daemon-reload
systemctl restart vncserver@:1.service
VNC :1 → 5901
ss -lntp | grep 590
firewall-cmd --list-all
firewall-cmd --add-port=5901/tcp --permanent
firewall-cmd --reload
getenforce
如果是 Enforcing,可临时测试:
setenforce 0
如解决,再查 SELinux 日志:
ausearch -m avc -ts recent
| 报错 | 可能原因 |
|---|---|
| Connection refused | 服务没起 / 端口错 |
| Timed out | 防火墙 |
| Authentication failure | 密码错(vncpasswd) |
| Black screen | xstartup 错 |
| Permission denied | SELinux / 用户目录权限 |
rpm -qa | grep tigervnc
vncpasswd
systemctl restart vncserver@:1
journalctl -u vncserver@:1
如果你愿意,可以把具体报错信息或日志贴出来(比如 journalctl 或 :1.log),我可以直接帮你定位是哪一步的问题。