温馨提示×

怎样排查Ubuntu VNC故障

小樊
95
2026-09-10 02:54:13
栏目: 智能运维

排查 Ubuntu 上的 VNC 故障,通常可以按**“网络 → 服务 → 配置 → 桌面环境 → 日志”**的顺序来进行。下面是一套比较系统的方法。


一、确认基础网络与端口

1. 确认 VNC 服务是否在运行

ps aux | grep vnc
# 或
systemctl status vncserver@:1.service

如果你用的是 tigervnc / tightvnc:

vncserver -list

2. 检查端口是否监听

ss -lntp | grep 59

常见端口:

  • 5900 → :0
  • 5901 → :1

如果没有监听,说明 VNC 服务没起来。

3. 防火墙检查

sudo ufw status

必要时放行:

sudo ufw allow 5901/tcp

云服务器还要检查安全组规则。


二、确认 VNC 服务配置

1. 查看 VNC 配置文件

常见位置:

~/.vnc/config
~/.vnc/xstartup

xstartup 示例(Ubuntu + XFCE):

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

确保有执行权限:

chmod +x ~/.vnc/xstartup

2. 确认桌面环境已安装

echo $XDG_CURRENT_DESKTOP

未安装可装:

sudo apt install xfce4

三、常见故障现象与处理

现象 1:连接后黑屏

原因通常是 xstartup 没正确启动桌面。

解决:

  • 修改 ~/.vnc/xstartup
  • 杀掉原会话:
vncserver -kill :1
vncserver :1

现象 2:连接被拒绝

  • 服务没启动
  • 端口不对
  • IP/防火墙问题

检查:

telnet 服务器IP 5901

现象 3:灰屏 / 无法操作

一般是桌面环境崩溃或权限问题。

查看日志:

~/.vnc/*.log

四、查看日志(非常关键)

VNC 日志

cat ~/.vnc/主机名:1.log

系统日志

journalctl -xe
journalctl -u vncserver@:1.service

五、使用 systemd 的正确方式(推荐)

/etc/systemd/system/vncserver@.service 示例:

[Unit]
Description=VNC Server
After=network.target

[Service]
Type=forking
User=youruser
ExecStart=/usr/bin/vncserver :%i
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

六、快速自检清单 ✅

  • [ ] VNC 服务已启动
  • [ ] 端口在监听
  • [ ] 防火墙/安全组放行
  • [ ] xstartup 正确
  • [ ] 桌面环境已安装
  • [ ] 日志无明显报错

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • 用的 VNC(TigerVNC / TightVNC / RealVNC)
  • 错误信息或日志内容

我可以直接帮你定位具体原因。

0 踩