# 11.4 华丽的图形接口: VNC 服务器
## 11.4 华丽的图形接口: VNC 服务器
就如同刚刚上头讲到的,使用 xdmcp 可能会启动多个不同的埠口,导致防火墙设定上面比较困扰些。那有没有简单一点的图形接口连接方式? 其实还有很多啦,在这里我们先来讲一个比较简单的,那就是 VNC (Virtual Network Computing) 这玩意儿啦!([注6](#ps6))
- - - - - -
### 11.4.1 预设的 VNC 服务器:使用 twm window manager
VNC server 会在服务器端启动一个监听用户要求的端口,一般端口号码在 5901 ~ 5910 之间。当客户端启动 X server 联机到 5901 之后, VNC server 再将一堆预先设定好的 X client 透过这个联机传递到客户端上,最终就能够在客户端显示服务器的图形接口了。
不过需要注意的是,预设的 VNC server 都是独立提供给『单一』一个客户端来联机的,因此当你要使用 VNC 时, 再联机到服务器去启动 VNC server 即可。所以,一般来说, VNC server 都是使用手动启动的,然后使用完毕后, 再将 VNC server 关闭即可。整个作法其实很简单喔!你可以这样作:
```
[root@www ~]# vncserver [:号码] [-geometry 分辨率] [options]
[root@www ~]# vncserver [-kill :号码]
选项与参数:
:号码 :就是将 VNC server 开在哪个埠口,如果是 :1 则代表 VNC 5901 埠口
-geometry :就是分辨率,例如 1024x768 或 800x600 之类的
options :其他 X 相关的选项,例如 -query localhost 之类的
-kill :将已经启动的 VNC 埠口删除!依据身份控制喔。
[root@www ~]# yum install tigervnc-server
# 这个是必须要的服务器软件,注意软件的名称喔!与之前的版本不同!
# 将 VNC server 启动在 5903 埠口
[root@www ~]# vncserver :3
You will require a password to access your desktops.
Password: <==输入 VNC 的联机密码,这是建立 VNC 时所需要的
Verify: <==再输入一次相同的密码
xauth: creating new authority file /root/.Xauthority
New 'www.centos.vbird:3 (root)' desktop is www.centos.vbird:3
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/www.centos.vbird:3.log
[root@www ~]# netstat -tulnp | grep X
tcp 0 0 0.0.0.0:5903 0.0.0.0:* LISTEN 4361/Xvnc
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 1755/Xorg
tcp 0 0 0.0.0.0:6003 0.0.0.0:* LISTEN 4361/Xvnc
tcp 0 0 :::6000 :::* LISTEN 1755/Xorg
tcp 0 0 :::6003 :::* LISTEN 4361/Xvnc
# 已经启动所需要的埠口啰!
```
在上述的指令操作中,你要知道的几个项目是:
1. 密码至少需要六个字符
2. 依据使用 vncserver 的身份,将刚刚建立的密码放置于该账号家目录下。例如上述的身份是使用 root 身份,因此密码文件会放在 /root/.vnc/passwd 这个档案中但是若该档案已经存在,则不会出现建立密码的画面。
3. 当客户端联机成功后,服务器将会传送 /root/.vnc/startx 内的 X client 给客户端喔!
那如果你想要修改 VNC 密码呢?很简单,那就使用 vncpasswd 吧!
```
[root@www ~]# ls -l /root/.vnc/passwd
-rw-------. 1 root root 8 Jul 26 15:08 /root/.vnc/passwd
[root@www ~]# vncpasswd
Password: <==就是这里开始输入新的密码啊!
Verify:
[root@www ~]# ls -l /root/.vnc/passwd
-rw-------. 1 root root 8 Jul 26 15:15 /root/.vnc/passwd
# 看吧!时间有更新喔!这个档案的内容更动过啰!
```
接下来开始放行 5903 这个埠口的联机防火墙规则吧!因为预计可能会开放 11 个 VNC 的埠口,所以干脆一口气开放 11 个埠口吧!
```
[root@www ~]# vim /usr/local/virus/iptables/iptables.allow
iptables -A INPUT -i $EXTIF -s 192.168.100.0/24 -p tcp --dport 5900:5910 -j ACCEPT
[root@www ~]# /usr/local/virus/iptables/iptables.rule
[root@www ~]# iptables-save
-A INPUT -s 192.168.100.0/24 -i eth0 -p tcp -m tcp --dport 5900:5910 -j ACCEPT
# 要看得到上面这行才 OK 喔!
```
- - - - - -
### 11.4.2 VNC 的客户端联机软件
与 xdmcp 很类似啦, VNC 客户端在 Linux 系统上面有默认的软件,但是在 Windows 系统上面则必须要额外安装其他软件。 我们先来谈谈 Linux 的 VNC 用户软件吧!
- Linux 客户端程序: vncviewer
用在 Linux 客户端的 VNC 程序,那就是 vncviewer。只是,这个软件默认没有安装,所以你得要使用 yum 安装完毕后再来联机吧!不过一样要注意,服务器端的防火墙一样要设定妥当喔!然后开始在客户端的图形接口上执行底下数据:
```
[root@clientlinux ~]# yum install tigervnc
[root@clientlinux ~]# vncviewer 192.168.10.254:3
# 这个指令请一定一定要在图形接口上面执行才行喔!很重要!别忘了!
```
![](https://box.kancloud.cn/2016-05-13_5735da6e7af76.gif)
图 11.4-1、在 Linux 客户端执行 vncviewer 程序示意
在上图当中输入刚刚的 root 的 VNC 联机密码,请注意喔,是 VNC 的联机密码,而不是 root 的登入密码! 这两者是差很多的!也由于启动 VNC 的身份是 root ,因此这里才使用 root 的 VNC 联机密码。 所以,很多时刻,我们都是建议使用一般身份来启动 VNC server 的啦!当你输入正确的 VNC 联机密码后, 会出现如下的图示啰:
![](https://box.kancloud.cn/2016-05-13_5735da6e90cc8.gif)
图 11.4-2、在 Linux 客户端执行 vncviewer 程序示意
与以前的 VNC server 较大的差异,在 CentOS 6.x 当中,tigervnc-server 这套软件会主动的依据服务器端的图形接口登入方式给予正确的图形显示接口,而不是以前那样给予一个丑丑的 twm 而已! 这样我们就可以减少还得要修改一些有的没有的配置文件了!真是棒! 联机成功后,请在客户端关闭这个 vncviewer 的联机,因为接下来我们要准备由 Windows 联机到服务器的 port 5903 啰!
- Windows 客户端程序: realvnc
Windows 底下可用的 vnc client 软件不少,但是鸟哥比较熟悉的是 realvnc 这家公司出品的 GNU 的自由软件! 你可以在底下的连结下载到最简单的版本,是不用钱的自由软件版本喔!(鸟哥仅下载不用安装的 viewer 版本而已!)
- <http://www.realvnc.com/download.html>
直接执行 vnc-viewer 软件,然后就会看到如下的画面:
![](https://box.kancloud.cn/2016-05-13_5735da6eaf599.gif)
图 11.4-3、Windows Real VNC 客户端联机示意图
如上图所示,你在 server 字段填上 IP:port 的数据即可,然后按下『OK』吧!
![](https://box.kancloud.cn/2016-05-13_5735da6ec7fde.gif)
图 11.4-4、Windows Real VNC 客户端联机示意图
由于 VNC server 需要的仅是联机的 VNC 密码而已,因此上图中的 Username 可以不用填,老实说,这个程序它也不会让你填~ 呵呵!填完按下『OK』即可!接下来就会出现正确的画面啰!
![](https://box.kancloud.cn/2016-05-13_5735da6edba9a.gif)
图 11.4-5、Windows Real VNC 客户端联机示意图
- - - - - -
### 11.4.3 VNC 搭配本机的 Xdmcp 画面
如果因为某些特殊因素,你得要使用 VNC 来搭配 xdmcp 的输出时,那就直接在服务器透过底下的指令来处理即可! 要注意喔,你必须要已经启动了 xdmcp 了喔!而且,我们底下使用 student 的身份来启动这个 VNC 吧!
```
# 1\. 要确定 xdmcp 已经启动了才可以:
[root@www ~]# netstat -tlunp | grep 177
udp 0 0 0.0.0.0:177 0.0.0.0:* 1734/gdm-binary
# OK 的!确实有启动的啦!如果没有看到 177 的话,回到 [11.3](#xdmcp) 去处理处理
# 2\. 切换成 student,并且启动 VNC server 在 :5
[root@www ~]# su - student
[student@www ~]$ vncserver :5 -query localhost
You will require a password to access your desktops.
Password:
Verify:
xauth: creating new authority file /home/student/.Xauthority
New 'www.centos.vbird:5 (student)' desktop is www.centos.vbird:5
Creating default startup script /home/student/.vnc/xstartup
Starting applications specified in /home/student/.vnc/xstartup
Log file is /home/student/.vnc/www.centos.vbird:5.log
# 3\. 取消 xstartup 的启动内容
[student@www ~]$ vim /home/student/.vnc/xstartup
....(前面省略)....
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
# 将这个档案的内容,全部都加上 # 批注掉
# 4\. 重新启动 vncserver 喔!
[student@www ~]$ vncserver -kill :5
[student@www ~]$ vncserver :5 -query localhost
```
接下来请使用 root 的身份加入 5905 的端口防火墙规则,然后自行使用 Linux 的 vncviewer 或 Windows 的 RealVNC 来联机,你就会发现如下的画面:
![](https://box.kancloud.cn/2016-05-13_5735da6f22838.gif)
图 11.4-6、透过 VNC 通道取得 xdmcp 画面
我们这只 VNC 的联机程序是 student 身份,但是我们却可以透过 xdmcp 的登入功能来登入 root 身份喔! 因为在服务器上面的 Xvnc 程序是 student 拥有,这样会比较好啦!了解呼?
- - - - - -
### 11.4.4 开机就启动 VNC server 的方法
请注意,你不要将 vncserver 的指令写入在 /etc/rc.d/rc.local 中,否则可能会产生 localhost 无法登入的问题。 那该如何让你的 VNC server 在一开机就启动而不须要登入执行指令呢?可以的,但是你得要修改一下配置文件。 我们底下使用 student 的身份启动 VNC server,而启动的方式为使用 xdmcp 登入画面,启动的埠口就定在 5901 好了。 那你应该这样作:
```
[root@www ~]# vim /etc/sysconfig/vncservers
VNCSERVERS="1:student"
VNCSERVERARGS[1]="-query localhost"
# 上述两行的 1 指的就是那个埠口 5901 喔!要注意!
[root@www ~]# /etc/init.d/vncserver restart
[root@www ~]# chkconfig vncserver on
```
有够好简单吧!这样每次开机就搞定你的 VNC server 啰!
- - - - - -
### 11.4.5 同步的 VNC :可以透过图示同步教学
另外,有些朋友一定会觉得奇怪,那就是,为甚么我的 VNC 服务器的 server / client 端画面并不是同步的呢? 这是因为 Linux 本身提供多个 VNC server ,她们是各自独立的,所以当然就不会与 tty7 的画面同步了。 但是如果你想要与 Linux 的 tty7 同步的话,可以利用 VNC 释出的给 X Server 使用的模块来加以设定即可。
那使用这个模块有甚么好处啊?就是可以让两个图形接口在 server/client 都是一样的, 所以,如果你想要教你的朋友你是如何设定的,那就可以透过这个机制来处理,你的朋友在远程就能够知道你一步一步进行的过程! 这样很不赖吧!详细的作法可以参考底下的连结:
- <http://phorum.study-area.org/viewtopic.php?t=25713>
我们也来实做一下吧 (在 CentOS 6.x 当中并没有 xorg.conf 这个配置文件喔!所以,如果你要使用这些数据的话, 恐怕得要自行使用 X -configure 去建置 xorg.conf 后,再挪到 /etc/X11/ 去,然后才改的到设定!):
```
[root@www ~]# yum install tigervnc-server-module
[root@www ~]# vim /etc/X11/xorg.conf
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
DefaultDepth 24
# VBird
Option "passwordFile" "/home/student/.vnc/passwd"
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
# VBird
Section "Module"
Load "vnc"
EndSection
# 假设你的 vnc 密码档案放置在 /home/student/.vnc/passwd 里头,
# 这个时候就得要将密码文件内容写到 Screen 这个 section 当中了
[root@www ~]# init 3 ; init 5
[root@www ~]# netstat -tlunp | grep X
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 7445/Xorg
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 7445/Xorg
tcp 0 0 :::6000 :::* LISTEN 7445/Xorg
# 注意看喔!这几个 port 启动的 PID 都一样喔!所以会启动一个 port 5900 啰!
```
之后你可以使用『 vncviewer 192.168.100.254 』来联机即可,不需要加上 :0 之类的埠口。 然后你可以看一下客户端与服务器端的图形接口,你会发现到两者移动鼠标时,两者的画面会同步运作喔! 非常有趣呢!只不过这个动作还是只允许一条 VNC 联机,不能让所有客户端都连到 port 5900 ,这真是太可惜了!
- - - - - -
- 鸟哥的Linux私房菜:服务器架设篇 第三版
- 第一部份:架站前的进修专区
- 作者序
- 第一章、架设服务器前的准备工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架设服务器流程
- 1.3 自我评估是否已经具有架站的能力
- 1.4 本章习题
- 第二章、基础网络概念
- 2.1 网络是个什么玩意儿
- 2.2 TCP/IP 的链结层相关协议
- 2.3 TCP/IP 的网络层相关封包与数据
- 2.4 TCP/IP 的传输层相关封包与数据
- 2.5 连上 Internet 前的准备事项
- 2.6 重点回顾:
- 2.7 本章习题
- 2.8 参考数据与延伸阅读
- 第三章、局域网络架构简介
- 3.1 局域网络的联机
- 3.2 本书使用的内部联机网络参数与通讯协议
- 第四章、连上 Internet
- 4.1 Linux 连上 Internet 前的注意事项
- 4.2 连上 Internet 的设定方法
- 4.3 无线网络--以笔记本电脑为例
- 4.4 常见问题说明
- 4.5 重点回顾
- 4.6 本章习题
- 4.7 参考数据与延伸阅读
- 第五章、 Linux 常用网络指令
- 5.1 网络参数设定使用的指令
- 5.2 网络侦错与观察指令
- 5.3 远程联机指令与实时通讯软件
- 5.4 文字接口网页浏览
- 5.5 封包撷取功能
- 5.6 重点回顾
- 5.7 本章习题
- 5.8 参考数据与延伸阅读
- 第六章、 Linux 网络侦错
- 6.1 无法联机原因分析
- 6.2 处理流程
- 6.3 本章习题
- 6.4 参考数据与延伸阅读
- 第二部分:主机的简易资安防护措施
- 第七章、网络安全与主机基本防护:限制端口, 网络升级与 SELinux
- 7.1 网络封包联机进入主机的流程
- 7.2 网络自动升级软件
- 7.3 限制联机埠口 (port)
- 7.4 SELinux 管理原则
- 7.5 被攻击后的主机修复工作
- 7.6 重点回顾
- 7.7 课后练习
- 7.8 参考数据与延伸阅读
- 第八章、路由观念与路由器设定
- 8.1 路由
- 8.2 路由器架设
- 8.3 动态路由器架设:quagga (zebra + ripd)
- 8.4 特殊状况:路由器两边界面是同一个 IP 网段: ARP Proxy
- 8.5 重点回顾
- 8.6 本章习题
- 8.7 参考数据与延伸阅读
- 第九章、防火墙与 NAT 服务器
- 9.1 认识防火墙
- 9.2 TCP Wrappers
- 9.3 Linux 的封包过滤软件:iptables
- 9.4 单机防火墙的一个实例
- 9.5 NAT 服务器的设定
- 9.6 重点回顾
- 9.7 本章习题
- 9.8 参考数据与延伸阅读
- 第十章、申请合法的主机名
- 10.1 为何需要主机名
- 10.2 注册一个合法的主机名
- 10.3 重点回顾
- 10.4 本章习题
- 10.5 参考数据与延伸阅读
- 第三部分:局域网络内常见的服务器架设
- 第十一章、远程联机服务器SSH / XDMCP / VNC / RDP
- 11.1 远程联机服务器
- 11.2 文字接口联机服务器: SSH 服务器
- 11.3 最原始图形接口: Xdmcp 服务的启用
- 11.4 华丽的图形接口: VNC 服务器
- 11.5 仿真的远程桌面系统: XRDP 服务器
- 11.6 SSH 服务器的进阶应用
- 11.7 重点回顾
- 11.8 本章习题
- 11.9 参考数据与延伸阅读
- 第十二章、网络参数控管者: DHCP 服务器
- 12.1 DHCP 运作的原理
- 12.2 DHCP 服务器端的设定
- 12.3 DHCP 客户端的设定
- 12.4 DHCP 服务器端进阶观察与使用
- 12.5 重点回顾
- 12.6 本章习题
- 12.7 参考数据与延伸阅读
- 第十三章、文件服务器之一:NFS 服务器
- 13.1 NFS 的由来与其功能
- 13.2 NFS Server 端的设定
- 13.3 NFS 客户端的设定
- 13.4 案例演练
- 13.5 重点回顾
- 13.6 本章习题
- 13.7 参考数据与延伸阅读
- 第十四章、账号控管: NIS 服务器
- 14.1 NIS 的由来与功能
- 14.2 NIS Server 端的设定
- 14.3 NIS Client 端的设定
- 14.4 NIS 搭配 NFS 的设定在丛集计算机上的应用
- 14.5 重点回顾
- 14.6 本章习题
- 14.7 参考数据与延伸阅读
- 第十五章、时间服务器: NTP 服务器
- 15.1 关于时区与网络校时的通讯协议
- 15.2 NTP 服务器的安装与设定
- 15.3 客户端的时间更新方式
- 15.4 重点回顾
- 15.5 本章习题
- 15.6 参考数据与延伸阅读
- 第十六章、文件服务器之二: SAMBA 服务器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服务器的基础设定
- 16.3 Samba 客户端软件功能
- 16.4 以 PDC 服务器提供账号管理
- 16.5 服务器简单维护与管理
- 16.6 重点回顾
- 16.7 本章习题
- 16.8 参考数据与延伸阅读
- 第十七章、区网控制者: Proxy 服务器
- 17.1 什么是代理服务器 (Proxy)
- 17.2 Proxy 服务器的基础设定
- 17.3 客户端的使用与测试
- 17.4 服务器的其他应用设定
- 17.5 重点回顾
- 17.6 本章习题
- 17.7 参考数据与延伸阅读
- 第十八章、网络驱动器装置: iSCSI 服务器
- 18.1 网络文件系统还是网络驱动器
- 18.2 iSCSI target 的设定
- 18.3 iSCSI initiator 的设定
- 18.4 重点回顾
- 18.5 本章习题
- 18.6 参考数据与延伸阅读
- 第四部分:常见因特网服务器架设
- 第十九章、主机名控制者: DNS 服务器
- 19.1 什么是 DNS
- 19.2 Client 端的设定
- 19.3 DNS 服务器的软件、种类与 cache only DNS 服务器设定
- 19.4 DNS 服务器的详细设定
- 19.5 协同工作的 DNS: Slave DNS 及子域授权设定
- 19.6 DNS 服务器的进阶设定
- 19.7 重点回顾
- 19.8 本章习题
- 19.9 参考数据与延伸阅读
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服务器之三: FTP 服务器
- 21.1 FTP 的数据链路原理
- 21.2 vsftpd 服务器基础设定
- 21.3 客户端的图形接口 FTP 联机软件
- 21.4 让 vsftpd 增加 SSL 的加密功能
- 21.5 重点回顾
- 21.6 本章习题
- 21.7 参考数据与延伸阅读
- 第二十二章、邮件服务器: Postfix
- 22.1 邮件服务器的功能与运作原理
- 22.2 MTA 服务器: Postfix 基础设定
- 22.3 MRA 服务器: dovecot 设定
- 22.4 MUA 软件:客户端的收发信软件
- 22.5 邮件服务器的进阶设定
- 22.6 重点回顾
- 22.7 本章习题
- 22.8 参考数据与延伸阅读