CentOS7 快速搭建VNC Server 实现服务器远程控制台访问(Java Viewer)

前言

工作中会有使用到VNC的时候,尤其是做服务器运维相关工作的时候,往往远程管理网和办公网或者生产环境相互隔离,远程管理的工作就会变的复杂,因此为了实现方便管理同时保障网络安全性,往往服务器运维人员会将在远程数据中心(IDC)内搭建一套Windows桌面系统或者使用VNC实现远程管理KVM Java Viewer的访问。

准备工作

  • 确认yum源可用
  • 确认有root或者sudo权限
  • 保证各部分的网络是可联通的

开始部署

1. 安装CentOS桌面环境
CentOS的桌面环境有很多,如GNOME Desktop,KDE,Xfce,LXDE等,这里我们选择Xfce,其他的也都可以使用,看个人喜好。
安装Xfce比较简单,使用yum即可:

sudo yum group list #查看可以安装的软件包
sudo yum -y groupinstall Xfce #安装Xfce桌面环境

2. 安装并配置VNC Server

(1)VNC Server的安装也很简单,CentOS默认使用的VNC Server是tigervnc,可以直接通过yum安装:

sudo yum -y install tigervnc-server #安装VNC Server

(2)安装完成以后,需要进行简单的配置,VNC Server最好不要使用root权限,创建一个专门用于VNC的账号,并设置密码。

使用root账号创建用户,我这里是创建的maintain用户:

useradd maintain
#
su maintian  #切换到maintain用户
#
vncpasswd #执行vncpasswd 设置vnc 密码
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used

密码设置完成后,会在/home/maintain/.vnc/下生成passwd文件,用于存储和验证密码。
(3)启动配置VNC Server,这里有两种方式:
第一种是使用服务配置文件的形式,需要复制配置文件并更改配置:

cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service  #指定服务实例编号,这里是数字1,同时也是端口号5901
#
vim /etc/systemd/system/vncserver@:1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=xfce  #修改成支持的桌面模式

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'   # %i 修改成 :1
ExecStart=/usr/bin/vncserver_wrapper <USER> %i   #USER修改成自己创建 的vnc 用户。
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'  # %i 修改成 :1

[Install]
WantedBy=multi-user.target
#
systemctl daemon-reload  #加载守护进程
systemctl start vncserver@:1 #启动服务ID1的程序

这种启动方式我并未使用和验证,整个配置是参考了下面这篇文章,感兴趣的可以自行配置和验证。参考文章:https://serverspace.io/support/help/installing-and-configuring-a-vnc-server-on-centos-7/

第二种方式是直接在VNC用户下执行:vncserver,缺点是服务器重启后需要重新执行,或者写脚本做到开机自启动,优点是简单,同时可以满足需求。

vncserver  #执行,第一次执行的时候会在用户家目录下的 /.vnc 生成两个主要配置文件config和xstartup
#
ls /home/maintain/.vnc
config  <hostname>:1.log   <hostname>:1.pid  passwd  xstartup
#
cd /home/maintain/.vnc
vim xstartup  #更改配置文件
#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4   #更换成使用的桌面模式,若是使用GNOME Desktop,则保持默认即可
# Assume either Gnome or KDE will be started by default when installed
# We want to kill the session automatically in this case when user logs out. In case you modify
# /etc/X11/xinit/Xclients or ~/.Xclients yourself to achieve a different result, then you should
# be responsible to modify below code to avoid that your session will be automatically killed
if [ -e /usr/bin/gnome-session -o -e /usr/bin/startkde ]; then
    vncserver -kill $DISPLAY
fi
#
cat config #可以保持不变,不必须更改
#securitytypes=vncauth,tlsvnc
#desktop=xfce
#
vncserver #第一次更改完配置文件,再次执行,不用加“:1”,会自动往后排序,具体用法可以使用“-h”查看。
vncserver -list #查看当前的服务进程的运行列表,可以看到“:1”存在。如无问题,则到此vnc server的配置和启动就完成了

TigerVNC server sessions:

X DISPLAY #	PROCESS ID
:1		429387
#
netstat -tlnp
tcp        0      0 0.0.0.0:5902            0.0.0.0:*               LISTEN      554190/Xvnc
#
ss -tulpn| grep vnc

(4)连接验证

下载VNC Viewer,可通过官网下载并完成安装。

打开客户端,新建连接:

centos7 限制远程登陆ip centos7远程控制_linux


centos7 限制远程登陆ip centos7远程控制_运维_02


centos7 限制远程登陆ip centos7远程控制_chrome_03


连接VNC server验证完成,可以开启VNC使用之旅了。

3. 安装Google-chrome浏览器
完成上面的VNC连接以后,开始安装浏览器(若是使用的GNOME Desktop桌面模式,默认自带Firefox浏览器),这里我选择的是Google-chrome浏览器,使用习惯问题,不必纠结。
这里安装是使用的yum方式,主机可以访问外网,若是环境不允许可以自行下载Linux版本的软件包,使用手动安装方式,可参考Google官网,不做介绍:https://support.google.com/chrome/answer/95346?hl=zh-Hans&co=GENIE.Platform%3DDesktop#zippy=%2Clinux

请确保有权限或者在root用户下执行:

cat /etc/yum.repos.d/google-chrome.repo  #创建repo源
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl.google.com/linux/linux_signing_key.pub

#
yum clean all
#
yum -y install google-chrome-stable

打开VNC桌面,查看Google-chrome的安装情况,并运行:

centos7 限制远程登陆ip centos7远程控制_centos7 限制远程登陆ip_04

4. 安装Java jdk

浏览器完成安装以后,并不是我们最终的目标,服务器运维工程师在进行远程管理访问的时候是基于浏览器完成的,在具体操作时还需要Java的支持。

centos7 限制远程登陆ip centos7远程控制_chrome_05


这里jdk的安装同样使用yum的方式安装:

yum list |grep ‘jdk’
java-1.8.0-openjdk.x86_64
java-1.8.0-openjdk-headless.x86_64
#
yum -y install java-1.8.0-openjdk.x86_64 #如果存量服务器都比较老,建议安装低版本jdk
yum -y install java-1.8.0-openjdk-headless.x86_64
#
rpm -qa |grep jdk
java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64
java-1.8.0-openjdk-headless-1.8.0.302.b08-0.el7_9.x86_64

5. 安装icedtea-web软件
(1)icedtea简单理解就是Java jdk的一个工具,浏览器的插件,安装也非常的方便:

yum list |grep icedtea-web
icedtea-web.x86_64
icedtea-web-devel.noarch
icedtea-web-javadoc.noarch
#
yum -y install icedtea-web

(2)添加Google-chrome支持
Google-chrome的默认安装目录是/opt/google/chrome/,添加Java icedtea插件支持:

mkdir /opt/google/chrome/plugins
#
cd /opt/google/chrome/plugins
#
ln -s /usr/lib64/IcedTeaPlugin.so .

至此整个过程完毕

最后

  • 鉴于Java jdk这块使用的时候问题会比较多,因此建议后续服务器运维多选择HTML5 Viewer。
  • 关于Firefox浏览器插件的支持,Java官网同样给出了方发,同Google-chrome,只是库文件不一样,具体可查阅官网。

参考文档

https://wiki.archlinux.org/title/TigerVNC#Initial_setuphttps://serverspace.io/support/help/installing-and-configuring-a-vnc-server-on-centos-7/Java官网:https://www.java.com/zh-CN/download/help/enable_browser_ubuntu.html