千家信息网

怎么在centos7环境下配置vncserver

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇文章为大家展示了怎么在centos7环境下配置vncserver,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。管理Linux服务器时,在多数情况下,大家都
千家信息网最后更新 2026年11月03日怎么在centos7环境下配置vncserver

本篇文章为大家展示了怎么在centos7环境下配置vncserver,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

管理Linux服务器时,在多数情况下,大家都是通过SSH连接到目标服务器,在命令行界面下执行各项管理操作,不过,某些时候我们也希望能在界面化的环境中执行操作。本文就将向大家介绍,通过配置vnc服务,以图形化界面远程访问目标服务器。

有些童鞋在之前的工作和学习过程中,可能对vncserver已经很熟悉了,那这里为什么还要介绍配置vnc服务的方式呢,根本原因是进入到CentOS 7版本之后,由于Linux对服务管理方式的变化,vncsrever的配置较之前也有了很大不同,为了能使新接触CentOS7的亲们少走些弯路,这里通过实践操作,学习在CentOS7环境下如何配置VNC服务。

提示

1:文中操作环境基于CentOS 7,当然也同样适用于RHEL 7。

2:以下操作如非特别注明,均是在root用户下执行。

一、安装VNC

要以界面化方式访问服务器,那么首先我们要确认目标服务器安装了图形化环境,Linux系统下常见的桌面环境有GNOME和KDE,这里我们首先通过Group的方式安装GNOME桌面,执行命令如下:

# yum -y groupinstall "GNOME Desktop"

现在就可以在我们的Centos7服务器上安装vncserver了,安装tigervnc服务端,执行命令如下:

# yum -y install tigervnc-server


二、配置VNC

对于Linux7之前的系统,安装完成后会通过/etc/sysconfig/vncservers文件进行配置,进入7.0版本后,这个文件仍然存在,但已经失去了实际意义,其内容只有一行:

# more /etc/sysconfig/vncservers

# THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/vncserver@.service

这就跟Linux7之后服务管理方式的变化有关了,接下来我们就演示如何将vncserver配置为systemd能够管理的服务。

tigervnc-server安装后,自动创建一个名为vncserver@.server的模块文件,也就是前面/etc/sysconfig/vncservers文件内容中所指向的路径。

我们来看一下这个文件中的内容:

# more /lib/systemd/system/vncserver@.service

# The vncserver service unit file

#

# Quick HowTo:

# 1. Copy this file to /etc/systemd/system/vncserver@.service

# 2. Edit /etc/systemd/system/vncserver@.service, replacing

# with the actual user name. Leave the remaining lines of the file unmodified

# (ExecStart=/usr/sbin/runuser -l -c "/usr/bin/vncserver %i"

# PIDFile=/home//.vnc/%H%i.pid)

# 3. Run `systemctl daemon-reload`

# 4. Run `systemctl enable vncserver@:.service`

#

# DO NOT RUN THIS SERVICE if your local area network is

# untrusted! For a secure way of using VNC, you should

# limit connections to the local host and then tunnel from

# the machine you want to view VNC on (host A) to the machine

# whose VNC output you want to view (host B)

#

# [user@hostA ~]$ ssh -v -C -L 590N:localhost:590M hostB

#

# this will open a connection on port 590N of your hostA to hostB's port 590M

# (in fact, it ssh-connects to hostB and then connects to localhost (on hostB).

# See the ssh man page for details on port forwarding)

#

# You can then point a VNC client on hostA at vncdisplay N of localhost and with

# the help of ssh, you end up seeing what hostB makes available on port 590M

#

# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.

#

# Use "-localhost" to prevent remote VNC clients connecting except when

# doing so through a secure tunnel. See the "-via" option in the

# `man vncviewer' manual page.



[Unit]

Description=Remote desktop service (VNC)

After=syslog.target network.target


[Service]

Type=forking

# Clean any existing files in /tmp/.X11-unix environment

ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

ExecStart=/usr/sbin/runuser -l -c "/usr/bin/vncserver %i"

PIDFile=/home//.vnc/%H%i.pid

ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'


[Install]

WantedBy=multi-user.target

对systemd服务比较熟悉的朋友,根据这个模块文件,应该就能快速的进行配置。即便是对于systemd不太熟悉的朋友也没有关系,一方面该文件的内容其实已经对过程描述的较为清晰,专门写了"# Quick HowTo:",对如何使用进行了简单明了的介绍;另一方面,接下来咱们会一步步的进行演示,包管大家都能明白。


基本上,我们也是按照Quick HowTo中的步骤操作

1、基于模板复制文件到目标路径下:

# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

2、编辑新复制出来vncserver@:1.server文件,根据实际情况将变量替换为适当的值。所谓实际情况,指的主要是两项:服务运行的所属USER,以及服务的Display Number,默认为:1。

关于DisplayNumber,这里多补充几句。单台服务器允许同时启动多个vncserver服务,不同的vncserver运行于不同的进程,提供不同的端口服务,这是毋庸置疑的,同时每个vncserver在启动时要指定一个Display Number,指定的Display Number大于0并且不重复即可,如果启动vncserver时没有指定,那么默认的Display Number会从1开始递增。如果同一台服务器中多个vncserver启动时指定了相同的Display Number,那么只会有一个能够启动成功。

接下来我们编辑vncserver@:1.service文件,修改配置项:

# vim /etc/systemd/system/vncserver@:1.service


原始配置如下:

[Service]

Type=forking

# Clean any existing files in /tmp/.X11-unix environment

ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

ExecStart=/usr/sbin/runuser -l -c "/usr/bin/vncserver %i"

PIDFile=/home//.vnc/%H%i.pid

ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'


修改后的配置如下:

[Service]

Type=forking

# Clean any existing files in /tmp/.X11-unix environment

ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :1 > /dev/null 2>&1 || :'

ExecStart=/usr/sbin/runuser -l jss -c "/usr/bin/vncserver :1"

PIDFile=/home/jss/.vnc/%H:1.pid

ExecStop=/bin/sh -c '/usr/bin/vncserver -kill :1 > /dev/null 2>&1 || :'


总的来说,主要做了两处改动,首先是将%i替换为:1,其次是将替换为jss。

保存退出。


3、重新加载systemd的配置

# systemctl daemon-reload


4、启用这个服务,将vncserver服务设置为开机自启动:

# systemctl enable vncserver@:1.service


至此,配置部分基本告一段落,但是注意,这个时候先不要启动该vncserver,因为vncserver的访问密钥文件还未创建,我们要为vncserver创建密钥后再启动该服务项。


由于前面的配置过程中,指定vncserver运行在jss用户下,因此,首先切换到jss用户:

# su - jss

执行vncpasswd,并输入访问密码,操作如下:

$ vncpasswd

Password:

Verify:


然后返回root用户下,以后就可以通过systemd来控制vncserver服务的启停了。

例如,启动服务:

# systemctl start vncserver@:1.service


查看服务状态:

# systemctl status vncserver@:1.service

● vncserver@:1.service - Remote desktop service (VNC)

Loaded: loaded (/etc/systemd/system/vncserver@:1.service; disabled; vendor preset: disabled)

Active: active (running) since Mon xxxx-02-06 14:23:51 CST; 1min ago

Process: 29009 ExecStart=/usr/sbin/runuser -l jss -c /usr/bin/vncserver :1 (code=exited, status=0/SUCCESS)

Process: 29007 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)

Main PID: 29035 (Xvnc)

CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service

? 29035 /usr/bin/Xvnc :1 -desktop localhost.localdomain:1 (jss) -auth /home/jss/.Xauthority -geometry 1024x768 -rfbwait 30000 -rfbauth /home/jss/.vnc/pass...


Feb 06 14:23:48 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)...

Feb 06 14:23:51 localhost.localdomain systemd[1]: Started Remote desktop service (VNC).

可以看到,服务处理active状态,已经被成功启动起来了。


三、客户端连接

当vnc服务启动之后,我们就可以在客户端通过vncviewer之类的工具连接服务器了。在指定服务器地址时,需要填入目标服务器的IP地址和服务的端口号,一般来说,目标服务器的IP地址肯定是知道的,但端口应该填什么呢。


Vnc服务所使用的端口号从5900开始,第一个运行的vnc服务启动后就是运行在5901的端口上,其它依次递增。如果要在linux系统中查询的话,可以通过netstat或ps之类的命令,例如:

# ps -ef | grep vnc

root 10936 10780 0 14:31 pts/0 00:00:00 grep --color=auto vnc

jss 29035 1 0 Feb06 ? 00:00:00 /usr/bin/Xvnc :1 -desktop localhost.localdomain:1 (jss) -auth /home/jss/.Xauthority -geometry 1024x768 -rfbwait 30000 -rfbauth /home/jss/.vnc/passwd -rfbport 5901 -fp catalogue:/etc/X11/fontpath.d -pn


这里我们就能看到,当前这个vnc服务运行在5901的端口上。如果该服务器上同时启动了多个vnc服务,那么通过查看进程的方式,也能区分出哪个服务运行于哪个用户及哪个端口。

如上图所示,指定目标服务器的IP地址和端口,点击"OK"即可。


就像我们前面提到过的,同一台服务器上可以运行多个vnc服务,不同vnc服务可以运行在不同的用户下,如果需要配置更多的vnc服务,那么可以重复步骤2中的操作,创建更多的vncserver@.service文件,为其指定不同的DisplayNumber即可。


四、vncserver服务常用管理操作


启用服务开机自启动:

# systemctl enable vncserver@:1.service

禁用服务开机自启动:

# systemctl disable vncserver@:1.service

服务启动:

# systemctl start vncserver@:1.service

服务停止:

# systemctl stop vncserver@:1.service

查看服务状态:

# systemctl status vncserver@:1.service

上述内容就是怎么在centos7环境下配置vncserver,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

服务 配置 服务器 文件 运行 环境 不同 目标 内容 方式 用户 端口 管理 命令 地址 多个 界面 接下来 同时 实际 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网络科技 江苏根荣互联网科技 互联网科技公司华为 中国互联网科技股 互联网科技会 北京互联网科技 互联网医疗科技 互联网科技公司发展 世界互联网领先科技成果 互联网金融科技委员会 深圳卡尔迅互联网科技有限公司怎么样 海南购全球互联网科技 湖北码尼互联网科技有限公司电话 崇明区互联网教育科技售后服务 佛山市拉法互联网科技有限公司 版纳互联网科技选哪家 艺电能源互联网科技有限公司招聘 互联网大会出现的黑科技 互联网科技自媒体灵感 利用互联网等科技手段 深圳恒合互联网络科技有限公司 互联网金融 科技创新 互联网科技大会 河南猎农互联网科技有限公司 搜狐科技互联网 济南有互联网科技公司吗 山东星卡互联网科技有限公司官网 2021世界互联网领先科技成果发布 全球科技与互联网公司市值变化 10位科技互联网大佬
0