CentOS 7 安装使用 VNC 远程桌面

安装使用VNC

VNC (Virtual Network Console)是虚拟网络控制台的缩写。它是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美。

VNC基本上是由两部分组成:一部分是客户端的应用程序(vncviewer);另外一部分是服务器端的应用程序(vncserver)。VNC的基本运行原理和一些Windows下的远程控制软件很相像。VNC的服务器端应用程序在UNIX和Linux操作系统中适应性很强,图形用户界面十分友好,看上去和Windows下的软件界面也很类似。在任何安装了客户端的应用程序(vncviewer)的Linux平台的计算机都能十分方便地和安装了服务器端的应用程序(vncserver)的计算机相互连接。另外,服务器端 (vncserver)还内建了Java Web接口,这样用户通过服务器端对其他计算机的操作就能通过Netscape显示出来了,这样的操作过程和显示方式比较直观方便。

1. 在 Linux 服务器上安装配置 VNC-server

1.1 CentOS 下安装桌面环境及 VNC 服务

vnc 服务依赖于桌面环境的运行,CentOS7 默认最小安装是不带桌面环境的,所以安装 VNC 之前需要首先安装桌面环境,GNOME 或者 KDE 均可。

我们以安装 "GNOME Desktop" 桌面环境为例安装 GNOME 桌面环境。

## 列出可安装的group
$ sudo yum grouplist
grouplist
## 安装 GNOME 桌面环境
$ sudo yum groupinstall "GNOME Desktop"
## 设置默认启动方式为界面启动
$ sudo ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
## 重启服务器
$ sudo reboot

注意:对于已经安装桌面环境的 CentOS7 可以不做处理。

确认桌面环境安装完成后, 安装 VNC 服务端。

## 安装 vnc-server
$ sudo yum install tigervnc tigervnc-server

1.2 配置 vnc-server

1.2.1 拷贝配置文件

安装完成后开始配置, 将模板配置文件拷贝至配置文件目录下 /etc/systemd/system/ , 如果是多用户,则每个用户拷贝一份,其中 @:1.service 中的数字 1 对应 VNC 服务端口 5901 , 数字 2 对应端口 5902 根据自己需求设置即可。

## 复制配置模板文件
$ sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
## 编辑配置文件
$ sudo vim /etc/systemd/system/vncserver@:1.service

配置文件(/etc/systemd/system/vncserver@:1.service)内容:

# The vncserver service unit file
#
# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@.service
# 2. Replace <USER> with the actual user name and edit vncserver
#    parameters appropriately
#    (ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
#     PIDFile=/home/<USER>/.vnc/%H%i.pid)
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:<display>.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 <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

1.2.2 修改配置文件

将配置文件中 <USER> 全部替换为自己的用户名,例如用户为 sam , 则修改为:

ExecStart=/usr/sbin/runuser -l sam -c "/usr/bin/vncserver %i"
PIDFile=/home/sam/.vnc/%H%i.pid

如果是使用 root 账户登录,则修改为:

ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid

1.2.3 重新加载配置文件

## 重新加载 systemctl 文件
$ sudo systemctl daemon-reload

1.2.4 添加防火墙例外

对于是默认防火墙(firewall)的,可以使用 firewall-cmd 进行配置:

## 方法一:添加 VNC 服务例外
$ sudo firewall-cmd --permanent --add-service vnc-server
## 方法二: 添加 5901 端口例外
$ sudo firewall-cmd --permanent --add-port 5091-5902/tcp
## 方法三:关闭并禁用防火墙(不推荐)
$ sudo systemctl stop firewalld.service
$ sudo systemctl disable firewalld.service
## 重启防火墙(适用于方法一和二)
$ sudo systemctl restart firewalld.service

对于防护墙为 iptable 的,修改相应的配置文件,添加 VNC 例外:

## 编辑配置文件
$ sudo vim /etc/sysconfig/iptables

在合适的位置添加:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 5901:5902 -j ACCEPT

然后重启防火墙:

## 重启防火墙
$ sudo service iptables restart

1.2.5 修改 VNC 连接密码

修改相应账户的连接密码:

$ vncpasswd sam

1.2.6 启动 VNC 并设置开机启动

为了方便连接,可以设置 VNC 开机启动:

## 设置开机启动
$ sudo systemctl enable vncserver@:1.service
## 启动 VNC 服务
$ sudo systemctl start vncserver@:1.service
## 查看 VNC 服务运行情况
$ sudo systemctl status vncserver@:1.service
## 停止 VNC 服务
$ sudo systemctl stop vncserver@:1.service

VNC 配置完成并启动后就可以使用本地客户机进行远程连接了。

2. 在 Windows 下安装配置 VNC 服务

下载相应版本安装 TightVNC :

安装完成后按照指示进行配置即可。

3. 远程连接服务器

3.1 Windows 下远程连接

Window 下使用 TightVNC-Viewer 进行连接:

Start Viewer

填写 IP 及 端口号:

Connection

输入配置的 VNC 连接密码即可远程控制服务器:

CentOS 7

3.2 Mac 下远程连接

Mac 下有天然优势,在 safari 浏览器地址栏中输入IP地址及端口即可:vnc://192.168.3.2:5901, 这里的 IP 地址更换为自己的服务器 IP 地址。

3.3 Linux 下远程连接

待续~

4. 参考资料

  1. http://www.baike.com/wiki/VNC
  2. https://my.oschina.net/huhaoren/blog/497394
  3. https://www.digitalocean.com/community/questions/couldn-t-start-vnc-server

欢迎关注小刘哥!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345