热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

怎么在centos7环境下配置vncserver

本篇文章为大家展示了怎么在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服务,那么通过查看进程的方式,也能区分出哪个服务运行于哪个用户及哪个端口。

怎么在centos7环境下配置vncserver

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

 

怎么在centos7环境下配置vncserver


就像我们前面提到过的,同一台服务器上可以运行多个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,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程笔记行业资讯频道。


推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
author-avatar
aaaaaaaaaaa的美丽人生_556
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有