在 CentOS 上实现 VNC 多用户登录,核心思路是:
每个用户一个 VNC 实例(不同端口 / 不同 systemd 服务),而不是多个用户挤进同一个会话。
下面以 CentOS 7 / 8(systemd) 为例说明,假设使用 TigerVNC。
yum install -y tigervnc-server
# CentOS 8 用 dnf
dnf install -y tigervnc-server
切换到对应用户:
su - user1
vncpasswd
exit
su - user2
vncpasswd
exit
⚠️ 不要用 root 给别的用户设密码。
cp /lib/systemd/system/vncserver@.service \
/etc/systemd/system/vncserver@:1.service
vim /etc/systemd/system/vncserver@:1.service
修改:
[Service]
Type=forking
User=user1
ExecStart=/usr/bin/vncserver :1 -geometry 1280x800 -depth 24
ExecStop=/usr/bin/vncserver -kill :1
✅ :1 表示 端口 5901
cp /etc/systemd/system/vncserver@:1.service \
/etc/systemd/system/vncserver@:2.service
修改:
User=user2
ExecStart=/usr/bin/vncserver :2 -geometry 1280x800 -depth 24
ExecStop=/usr/bin/vncserver -kill :2
端口对应关系:
| 显示号 | 端口 |
|---|---|
| :1 | 5901 |
| :2 | 5902 |
| :3 | 5903 |
systemctl daemon-reload
systemctl start vncserver@:1
systemctl enable vncserver@:1
systemctl start vncserver@:2
systemctl enable vncserver@:2
firewall-cmd --permanent --add-port=5901/tcp
firewall-cmd --permanent --add-port=5902/tcp
firewall-cmd --reload
使用 VNC Viewer 连接:
192.168.1.100:1
或
192.168.1.100:5901
不同用户连接不同端口即可。
❌ VNC 不支持
✅ 必须每个用户一个实例
检查:
ls ~/.vnc/xstartup
确保有桌面环境(GNOME / XFCE):
yum groupinstall "GNOME Desktop"
xstartup 示例:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec /etc/X11/xinit/xinitrc
临时测试:
setenforce 0
✅ 多用户 VNC + 不同端口 ✅
✅ 或用 xrdp + VNC(Windows 友好)
❌ 不建议 VNC 直接公网暴露(用 SSH 隧道)
如果你愿意,可以告诉我:
我可以给你 完整可执行脚本版本。