centos7使用vnc-server,关联 virtual-desktop, tigervnc, vncserver

VNC (Virtual Network Computing) is a server-client protocol which allows user accounts to remotely connect and control a distant system by using the resources provided by the Graphical User Interface.

VNC X or Vino, tigervnc-vncserver 为每一个用户配置一个独立的虚拟桌面。

使用 tigervnc server

  1. 安装 tigervnc server
    1
     sudo yum install -y tigervnc-server
    
  2. 配置vnc登陆密码
    1
    2
     $ su - your_user  # If you want to configure VNC server to run under this user directly from CLI without switching users from GUI
     $ vncpasswd
    
  3. 配置对应的service
    1
    2
     # 先从模板文件拷贝
     sudo cp /lib/systemd/system/vncserver@.service  /etc/systemd/system/vncserver@:1.service
    

    编辑 vi /etc/systemd/system/vncserver@\:1.service

    添加如下配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     [Unit]
     Description=Remote desktop service (VNC)
     After=syslog.target network.target
    
     [Service]
     Type=forking
     ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
     ExecStart=/sbin/runuser -l my_user -c "/usr/bin/vncserver %i -geometry 1280x1024"
     PIDFile=/home/my_user/.vnc/%H%i.pid
     ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
    
     [Install]
     WantedBy=multi-user.target
    

    刷新systemctl 配置

    1
    2
    3
    4
     # systemctl daemon-reload
     # systemctl start vncserver@:1
     # systemctl status vncserver@:1
     # systemctl enable vncserver@:1
    
  4. vnc 开放的端口
    一般从5901开始,后继有连接端口加一,上限是6000个端口

    可以用 ss 命令搜索:

    1
     ss -tulpn | grep vnc
    
  5. 防火墙配置
    1
    2
     # firewall-cmd --add-port=5901/tcp
     # firewall-cmd --add-port=5901/tcp --permanent
    
  6. 从vnc客户端连接 ==========================================

  7. 选择一个VNC客户端软件
    RealVNC VNC Viewer : 兼容windows,linux
    vinagre: CentOS 上使用,sudo yum install vinagre
    Remmina: debian系上使用, sudo apt-get install remmina

  8. 客户端地址输入: IP:Port ,例如 192.168.1.222:5901

  9. 提升安全性 ==========================================
  10. VNC通信除了密码,其他都是未加密的。可以限制本地访问,通过ssh tunnel再连接。

trouble shoting

vnc连接正常,但是显示蓝屏

可能是 vnc server 桌面环境没装好。

修复:

  1. vnc server 上安装 Gnome
    1
    2
    3
     # 保险期间,2个命令都执行了一下
     yum install gnome* --exclude=gnome-session-wayland-session
     yum groupinstall "GNOME Desktop"
    
  2. 重启宿主机