温馨提示×

CentOS VNC如何配置多用户

小樊
45
2025-12-17 09:44:05
栏目: 智能运维

CentOS VNC 多用户配置指南

一、适用场景与准备

  • 目标:让多个本地用户在 CentOS 7/8 上各自拥有独立的 VNC 桌面(例如 :1 → 5901:2 → 5902),可同时连接。
  • 准备:
    • 安装桌面环境(二选一或并存):yum groupinstall "GNOME Desktop" -yyum groupinstall "Xfce" -y
    • 安装 VNC 服务:yum install tigervnc-server -y
    • 为需要登录的每个系统用户设置 VNC 密码:su - <用户名> && vncpasswd(与系统登录密码无关)。

二、CentOS 7 配置步骤(systemd 模板方式)

  • 为每个用户创建 systemd 服务实例(以 user1user2 为例,分别使用 :1:2):
    1. 复制模板并启用服务
      cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
      cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service
      systemctl daemon-reload
      
    2. 编辑服务文件(示例为 vncserver@:1.service 的 [Service] 段)
      [Service]
      Type=simple
      ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i >/dev/null 2>&1 || :'
      ExecStart=/usr/sbin/runuser -l user1 -c "/usr/bin/vncserver %i -geometry 1920x1080 -alwaysshared -depth 24"
      ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i >/dev/null 2>&1 || :'
      
      user1 替换为对应用户名;:1 对应端口 5901:2 对应 5902,依此类推。
    3. 设置 VNC 密码(每个用户各自执行)
      su - user1
      vncpasswd
      exit
      su - user2
      vncpasswd
      exit
      
    4. 启动并开机自启
      systemctl enable --now vncserver@:1.service
      systemctl enable --now vncserver@:2.service
      
    5. 防火墙放行
      firewall-cmd --permanent --add-port=5901-5902/tcp
      firewall-cmd --reload
      
    6. 客户端连接
      • 地址格式:服务器IP:1服务器IP:5901(对应 :2 则为 :2:5902)。

三、CentOS 6 配置步骤(传统 initscripts 方式)

  • 安装与用户准备
    yum install vnc-server -y
    useradd user1 && passwd user1
    useradd user2 && passwd user2
    su - user1 && vncpasswd && exit
    su - user2 && vncpasswd && exit
    
  • 配置 /etc/sysconfig/vncservers
    VNCSERVERS="1:user1 2:user2"
    VNCSERVERARGS[1]="-geometry 1024x768 -alwaysshared"
    VNCSERVERARGS[2]="-geometry 1024x768 -alwaysshared"
    
  • 启动与防火墙
    service vncserver start
    chkconfig vncserver on
    iptables -I INPUT -p tcp --dport 5901:5902 -j ACCEPT
    service iptables save
    
  • 客户端连接:IP:1IP:5901(对应 :2 为 IP:2/5902)。

四、进阶 同桌面读写与只读同时访问

  • 思路:在同一显示号上开启一个可写会话,再开启一个只读镜像会话(适合演示/授课)。
  • 示例(以 :8 为例,读写端口 5908,只读端口 5909):
    1. 安装 x11vnc(RHEL7 常用做法)
      yum install epel-release -y
      yum install x11vnc -y
      
    2. 创建服务文件 /etc/systemd/system/vncserver@:8.service
      [Unit]
      Description=Remote desktop service (VNC)
      After=syslog.target network.target
      
      [Service]
      Type=forking
      PIDFile=/home/kiosk/.vnc/%H%i.pid
      ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i >/dev/null 2>&1 || :'
      ExecStart=/sbin/runuser -l kiosk -c "/usr/bin/vncserver :8 -geometry 1300x800 -AlwaysShared"
      ExecStartPost=/sbin/runuser -l kiosk -c "/usr/bin/x11vnc -nocursorshape -viewonly -shared -nopw -auth guess -forever -autoport 5908 -display :8 &"
      ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i >/dev/null 2>&1 || :'
      
      [Install]
      WantedBy=multi-user.target
      
    3. 设置 VNC 密码(含只读)
      su - kiosk
      vncpasswd
      # 当提示时选择 y 设置 view-only 密码
      exit
      
    4. 启动
      systemctl daemon-reload
      systemctl enable --now vncserver@:8.service
      
    5. 连接:读写客户端连 IP:8(5908),只读客户端连 IP:5909。提示:RHEL8 起 tigervnc 已支持设置只读密码,可直接用 vncpasswd 的只读选项实现类似效果。

五、常见问题与排错

  • 端口与显示号:显示号 :N 对应 5900+N(如 :1→5901)。若端口未监听,检查服务是否启动、用户是否执行过 vncpasswd、以及 ~/.vnc/xstartup 是否配置正确。
  • 黑屏/花屏:确认已安装桌面(GNOME/Xfce),并检查 ~/.vnc/xstartup 是否启动桌面会话;必要时在 xstartup 中使用 gnome-sessionstartxfce4。若出现花屏,可尝试将客户端画质设置为 High
  • 端口占用/异常退出:删除锁文件后重启服务
    rm -f /tmp/.X11-unix/X2
    systemctl restart vncserver@:2.service
    
  • 防火墙/SELinux:确保放行对应 590N/TCP;临时排障可 setenforce 0 验证是否为 SELinux 限制(生产环境请改为永久策略放行)。

0