VNC (Virtual Network Console)是虚拟网络控制台的缩写,VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美。 在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多数情况下用户只需要其中的两个命令:vncserver 和 vncviewer。
本文刊发于《网络安全和信息化》2019年第8期。
VNC (Virtual Network Console)是虚拟网络控制台的缩写,VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美。 在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多数情况下用户只需要其中的两个命令:vncserver 和 vncviewer。
VNC是远程连入操作系统,所有操作在UNIX、Linux主机服务端进行,即使操作过程中“本地电脑与操作主机网络断开”,也不影响操作的顺利进行,更重要的是,VNC是免费的、开源的。
CentOS7中安装并配置VNC的步骤如下:
1、准备工作,更改桌面模式或命令行模式。如果你的Centos系统本身就是桌面模式,此步可以不做。
1.1、获取当前系统启动模式
# systemctl get-default
如果得到结果是:multi-user.target,就需要再按1.2进行操作,如果得到的结果是:graphical.target,就直接进行第二步即可。
1.2、查看配置文件
# cat /etc/inittab
那么会得到以下结果:
# inittab is no longer used when using systemd.
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
# multi-user.target: analogous to runlevel 3 //命令行模式
# graphical.target: analogous to runlevel 5 //图形界面模式
# To view current default target, run:
# systemctl get-default
# To set a default target, run:
# systemctl set-default TARGET.target
那么我们就用以下命令进行模式的更改:
# systemctl set-default graphical.target //由命令行模式更改为图形界面模式
注意,以下命令可以反设置。
# systemctl set-default multi-user.target //由图形界面模式更改为命令行模式
可用systemctl get-default命令再查看一下会得到如下结果:
graphical.target
2、关闭防火墙。如果防火墙处于关闭状态,可以忽略此步。
centos7 的防火墙是firewalld,关闭防火墙的命令则为:
# systemctl stop firewalld.service #停止firewall
# systemctl disable firewalld.service #禁止firewall开机启动
# setenforce 0
# getenforce
# cat /etc/sysconfig/selinux #会看到以下结果
SELINUX=disabled
SELINUXTYPE=targeted
3、安装软件
# yum update #这个过程可能会很长
# yum groupinstall "GNOME Desktop" "X Window System" "Desktop"
# yum install tigervnc-server tigervnc vnc vnc-server
4、配置vnc连接
# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
vi /etc/systemd/system/vncserver@:1.service #修改配置文件
找到这如下内容:
ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
这里直接用root 用户登录,所以把<USER>替换成root
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
5、为VNC设置密码
# vncpasswd
键入密码并确认,如:12345678,然后再按提示再输入并确认密码。
最后再修改文件qemu.conf
vi /etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0" #去掉句首的#
vnc_password = "12345678" #去掉句首的#
6、重加载 systemd
# systemctl daemon-reload
7、启动vnc
# systemctl enable vncserver@:1.service
# systemctl start vncserver@:1.service
或者直接用vncserver 命令启动,从启动成功的提示中可以看到日志文件名。
图1 用命令启动成功
图2 去查看日志文件
打开这个日志文件,我们还可以看到端口号。
图3 日志文件内容
注意,前面操作中已经关闭了防火墙,如果防火墙打开,需要开通一下规则:
# firewall-cmd --permanent --add-service vnc-server
# systemctl restart firewalld.service
如果是iptable,则需要在/etc/sysconfig/iptables文件中添加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5903 -j ACCEPT
另外,关闭vnc连接命令是:
# /usr/bin/vncserver -kill :1
8、测试vnc连接
在Windows中下载并安装VNC Viewer,VNC远程连接信息如图4所示,其中ip是VNC服务端的地址,端口号为:5901。
图4 用VNC Viewer连接
图5 VNC Viewer连接成功