全部产品
阿里云办公

Linux实例安装VNC Server实现图形化访问

更新时间:2018-11-16 20:26:51

基于性能、通用性等因素考虑,阿里云官方公共Linux系统镜像默认没有安装VNC(Virtual Network Computing)服务组件。如果您希望图形化访问Linux实例,需要先在实例上安装VNC Server并安装图形界面。

本文介绍了如何在CentOS 6.8、CentOS 7.2和Ubuntu 14.04上安装配置VNC Server,实现图形化访问Linux实例。

如果您的实例使用CentOS镜像,可以使用脚本自动安装VNC Server和GNOME桌面环境。具体操作,请参考 在Linux实例上自动安装并运行VNC Server

前提条件

您已经在本地安装了VNC连接工具,比如 TightVNC Viewer

在CentOS 6.8上安装VNC Server

这部分以在CentOS 6.8上安装TigerVNC Server和GNOME为例,说明如何安装配置VNC Server。

  1. 远程连接Linux实例

  2. 运行以下命令安装GNOME桌面。

    1. yum groupinstall GNOME Desktop Environment -y

    安装需要较长时间,请您耐心等待。

  3. 运行以下命令安装VNC Server。

    1. yum install -y tigervnc-server
  4. 运行以下命令将VNC Server配置为开机自动启动。

    1. chkconfig --level 345 vncserver on
  5. 运行以下命令启动VNC Server,并按界面提示设置VNC连接密码。

    1. vncserver

    注意
    首次启动会要求设置密码,以后您可以运行vncpasswd命令修改连接密码。

  6. 按以下步骤修改 /root/.vnc/xstartup 文件,配置使用GNOME桌面:

    1. 运行命令 vim /root/.vnc/xstartup
    2. i 键进入编辑模式。
    3. 在文件最后一行,注释掉 twm &,并添加一行 gnome-session &
    4. Esc 键退出编辑模式,再输入 :wq 保存并退出。
  7. 按以下步骤在 /etc/sysconfig/vncservers 文件中配置监听端口和环境参数:

    1. 运行命令 vim /etc/sysconfig/vncservers
    2. i 键进入编辑模式。
    3. 添加以下内容:
      1. VNCSERVERS="1:root"
      2. VNCSERVERARGS[1]="-geometry 1200x800"
    4. Esc 键退出编辑模式,再输入 :wq 保存并退出。
  8. (可选)运行不同的命令完成其他设置:

    • 运行以下命令允许root账号访问图形界面。

      1. sed -i 's/.!= root./#&/' /etc/pam.d/gdm
    • 如果报以下错误,运行命令 dbus-uuidgen >/var/lib/dbus/machine-id 生成新的machine-id。

      1. D-Bus library appears to be incorrectly set up; failed to read
      2. machine uuid: Failed to open "/var/lib/dbus/machine-id": No such file or directory
    • ECS不允许开启SELinux服务和NetworkManager服务。如果您开启了这些服务,运行以下命令修改配置。

      1. vi /etc/selinux/config # 检查SELinux服务。如果SELINUX对应的值不是disabled,必须改为disabled。
      2. chkconfig --del NetworkManager # 关闭NetworkManager服务
  9. 运行以下命令重启VNC Server,使配置生效。

    1. service vncserver restart
  10. 运行命令 ps -ef | grep vnc 确认服务是否已经启动。如果返回以下类似结果,说明服务已经启动。
    CentOS6.8_ps运行结果

    由返回结果可知,服务使用了TCP 5901端口。

  11. (可选)如果您的实例上开启了防火墙,需要设置防火墙允许VNC访问。

    举例
    以iptables为例,您需要做如下设置:

    1. iptables -A INPUT -p tcp --dport 5901 -j ACCEPT #放行TCP 5901端口
    2. service iptables save # 保存规则
  12. 登录 ECS管理控制台,在实例所在安全组中 添加安全组规则,放行TCP 5901端口。

  13. 在本地机器的VNC Viewer上连接实例。具体操作步骤,请参考 在 Linux 实例上自动安装并运行 VNC Server 的描述。如果出现如下图所示的界面,说明您已经成功安装VNC Server实现了图形化访问。
    CentOS6.8_VNC Server实现GNOME桌面访问

在CentOS 7.2上安装 VNC Server

这部分以在CentOS 7.2上安装TigerVNC Server和GNOME为例,说明如何安装配置VNC Server。

  1. 远程连接Linux实例

  2. 运行以下命令安装GNOME桌面。

    1. yum groupinstall GNOME Desktop Environment -y

    安装需要较长时间。

  3. 运行以下命令安装VNC Server。

    1. yum install tigervnc-server -y
  4. 按以下步骤修改VNC Server配置文件,设置用户名(如本示例中的root):

    1. 运行命令vim /lib/systemd/system/vncserver@.service
    2. i键进入编辑模式。
    3. User=<User>ExecStartPIDFile的内容替换为以下内容。
      1. User=root
      2. # Clean any existing files in /tmp/.X11-unix environment
      3. ExecStartPre=-/usr/bin/vncserver -kill %i
      4. ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i"
      5. PIDFile=/root/.vnc/%H%i.pid
      CentOS7.2_修改配置文件
    4. Esc键退出编辑模式,再输入:wq保存并退出。
  5. 运行以下命令,将 /lib/systemd/system/vncserver@.service 改为 /lib/systemd/system/vncserver@:1.service。

    1. mv /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:1.service
  6. 运行以下命令重启systemd。

    1. systemctl daemon-reload
  7. 运行命令 vncpasswd,并按界面提示设置VNC Server连接密码。

  8. (可选)ECS不允许开启SELinux服务和NetworkManager服务。如果您开启了这些服务,运行以下命令修改配置。

    1. vi /etc/selinux/config # 检查SELinux服务。如果SELINUX对应的值不是disabled,必须改为disabled。
    2. chkconfig --del NetworkManager # 关闭NetworkManager服务
  9. 运行以下命令设置开机启动VNC Server。

    1. systemctl enable vncserver@:1.service
  10. 运行以下命令启动VNC Server。

    1. systemctl start vncserver@:1.service
  11. 运行命令 ps -ef | grep vnc 确认服务是否已经启动。如果返回以下类似结果,说明服务已经启动。
    CentOS7.2_ps运行结果

    由返回结果可知,服务使用了TCP 5901端口。

  12. (可选)如果您的实例上开启了防火墙,需要设置防火墙允许VNC访问。

    举例
    以firewalld为例,您需要做如下设置:

    1. firewall-cmd --permanent --add-service vnc-server #允许VNC访问
    2. systemctl restart firewalld.service # 重启firewalld
  13. 登录 ECS管理控制台,在实例所在安全组中 添加安全组规则,放行TCP 5901端口。

  14. 在本地机的VNC Viewer上连接实例。具体操作步骤,请参考 在 Linux 实例上自动安装并运行 VNC Server 的描述。如果出现如下图所示的界面,说明您已经成功安装VNC Server实现了图形化访问。
    CentOS7.2_VNC Server实现GNOME桌面访问

在Ubuntu 14.04上安装VNC Server

这部分以在Ubuntu 14.04上安装vnc4server和GNOME为例,说明如何安装配置VNC Server。

  1. 远程连接Linux实例

  2. 运行命令 apt-get update 更新源。

  3. 运行以下命令安装vnc4server。

    1. apt-get install vnc4server -y
  4. 运行以下命令开启VNC服务并按界面提示设置连接密码。

    1. vnc4server

    注意
    首次启动会要求设置密码,以后您可以使用vncpasswd修改连接密码。

    如果返回结果里出现类似下图所示的New ':1 (root)' desktop is :1 (代表主机名),表示vnc4server启动成功。程序会自动在当前用户(本示例中为root)主目录下产生一个.vnc目录。
    Ubuntu_启动vnc4server

  5. 运行命令 ps -ef | grep vnc 确认服务是否已经启动。如果返回以下类似结果,说明服务已经启动。
    Ubuntu_ps运行结果

    由返回结果可知,服务使用了TCP 5901端口。

  6. 运行以下命令安装GNOME桌面环境。

    1. apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal

    安装需要较长时间,请您耐心等待。

  7. (可选)运行以下命令备份原有xstartup文件。

    1. cp ~/.vnc/xstartup ~/.vnc/xstartup.bak
  8. 按以下步骤修改vnc4server启动文件。

    1. 运行以下命令打开文件。
      1. vim ~/.vnc/xstartup
    2. i键进入编辑模式。
    3. 将文件内容替换为以下内容。
      1. #!/bin/sh
      2. # Uncomment the following two lines for normal desktop:
      3. # unset SESSION_MANAGER
      4. # exec /etc/X11/xinit/xinitrc
      5. [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
      6. [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
      7. xsetroot -solid grey
      8. vncconfig -iconic &
      9. #x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
      10. #x-window-manager &
      11. gnome-panel &
      12. gnome-settings-daemon &
      13. metacity &
      14. nautilus &
      15. gnome-terminal &
    4. Esc键退出编辑模式,再输入:wq保存并退出。
  9. 依次运行以下命令生成新的会话。

    1. vncserver -kill :1 #杀掉原来的桌面进程(假设桌面号为:1)
    2. vncserver :1 # 生成新的会话
  10. 登录 ECS管理控制台,在实例所在安全组中 添加安全组规则,放行TCP 5901端口。

  11. 在本地机的VNC Viewer上连接实例。具体操作步骤,请参考 在 Linux 实例上自动安装并运行 VNC Server 的描述。如果出现如下图所示的界面,说明您已经成功安装VNC Server实现了图形化访问。
    Ubuntu_VNC Server实现GNOME桌面访问

如果问题还未能解决,您可以到阿里云社区进行 免费咨询,或联系云市场商家寻求帮助