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

在Fedora22下安装配置RealVNCServer5.2.3的经验总结

RealVNC是目前功能最全、性能最好的VNC商业软件套件,很多时候为了确保性能和功能的统一,还是大量地在使用RealVNC。最近在Fedora22工作站上安装RealVNCServer5.2.3最新版,碰到了一些问题,借这个机会,把RealVNCServer的安装、两种服务模式的配置(Server模式和Virtual模式)都基本上弄清楚了,在RHEL/CentOS6.3/7.0等系统
RealVNC是目前功能最全、性能最好的VNC商业软件套件,很多时候为了确保性能和功能的统一,还是大量地在使用RealVNC。最近在Fedora 22工作站上安装RealVNC Server 5.2.3最新版,碰到了一些问题,借这个机会,把RealVNC Server的安装、两种服务模式的配置(Server模式和Virtual模式)都基本上弄清楚了,在RHEL/CentOS 6.3/7.0等系统上的安装也几乎与Fedora别无二致。
 
首先,当然是从RealVNC官方网站下载for Linux的安装包。注意,从5.0开始,RealVNC提供了统一的打包安装文件(安装后就已经包含服务端、客户端以及相关附带工具及文档等了),不需要再分别下载服务端、客户端等等了。
 
下载完后,解压缩并执行安装程序,相关可执行文件默认被安装到/usr/local/bin目录下。安装完后记得执行vnclicense命令添加并查看许可证……过程的细节这里我就不多说了,重点讲一讲如何配置。
 
RealVNC Server提供两种运行模式,即Server模式和Virtual模式。Server模式是指主机启动进入图形模式后,无论登录与否,多个远端都可以通过VNC访问主机当前的X11图形环境,所有远端共享当前主机上的同一个图形管理器会话,主机上的图形环境下的操作或者某个远端对主机图形环境下的远程操作,包括主机在内以及所有远端都能同时看见。Virtual模式则有点类似于云桌面方式,即远端通过VNC远程连接到主机后,主机上的VNC Server开启一个幕后的图形环境会话专供这个远端远程控制使用,每个连接到主机的远端,都拥有一个各自独立的远程图形环境会话,互不干扰,主机自己的图形环境会话也是独立的,不受远端的干扰。
 
这两种模式各有各的优点,我们这里不讨论比较。针对配置而言,首先要知道,RealVNC的配置文件基本都位于/etc/vnc目录下。VNC至少有三种认证模式,第一种是VNC自己的VNCAuth认证模式,只需要提供密码即可远程登录,不需要用户名,比较方便;第二种是Windows系统认证模式,针对安装在Windows上的VNC Server而言,可以使用Windows系统的账户认证;第三种是UnixAuth认证模式,针对安装在Unix/Linux上的VNC Server而言,可以使用Unix/Linux系统的账户认证。我们首先配置VNCAuth模式的密码,执行命令:
 
# /usr/local/bin/vncpasswd
 
根据提示输入密码确认即可。生成的密码自动保存在名为/root/.vnc/passwd的这个文件中。然后我们开始配置RealVNC Server的安全选项及认证模式。进入/etc/vnc/config.d目录下,创建两个文件,名字分别为common.custom.virtual和common.custom.x11。这两个文件分别是对应Virtual模式和Server模式的配置文件。其内容分别如下:
 
common.custom.virtual的内容为:
AllowHttp=0
AlwaysShared=1
ReverseSecurityTypes=RA2,RA2ne,None
SecurityTypes=RA2,RA2ne
UserPasswdVerifier=UnixAuth
 
common.custom.x11的内容为:
AllowHttp=0
AlwaysShared=1
ReverseSecurityTypes=RA2,RA2ne,None
SecurityTypes=RA2,RA2ne,VncAuth
UserPasswdVerifier=VncAuth
 
保存好后,根据RealVNC Server运行模式的需要,可在/etc/vnc/config.d当前目录下创建一个软连接名为common.custom,指向common.custom.virtual或者common.custom.x11,以便适应两种不同的运行模式。然后返回到/etc/vnc目录下,创建一个名为xstartup.custom.mate的文件,编辑其内容如下:
 
#!/bin/bash
/usr/bin/mate-session &
 
保存好后,记住一点,如果要让RealVNC Server运行在Virtual模式下,则需要在/etc/vnc目录下生成一个软连接名为xstartup.custom,指向xstartup.custom.mate;如果要让RealVNC Server运行在Server模式下,则要删除xstartup.custom。接着,利用yum或者dnf安装MATE桌面环境。之所以要安装MATE桌面环境,是因为从GNOME 3.0以及KDE 5.0开始,由于它们都使用了更高级的OpenGL特性实现炫丽的桌面特效,导致RealVNC Server再带的Virtual模式模拟X服务器无法支持,从而导致RealVNC Server在Virtual模式下无法启动GNOME 3.0/KDE 5.0,导致Virtual模式启动失败。而MATE桌面环境仍然采用GTK+2.0及简单的XCompose复合效果,RealVNC Server自己的Virtual模式X服务器可以支持得很好。所以这样一来,在Virtual模式下,远端连接到主机后看到的就是MATE桌面啦,而主机自己则仍然使用GNOME 3.0/KDE 5.0桌面,互不干扰,很有趣。当然,如果你喜欢,你也可以安装XFCE等轻量级桌面,然后修改上面的配置,让远端连接主机后看到的是XFCE桌面……
 
最后,就是使RealVNC Server服务生效并启动了。如果你想使用RealVNC 的Server模式,则使用如下命令:
 
# systemctl enable vncserver-x11-serviced.service
# systemctl start vncserver-x11-serviced.service
 
如果你想使用Virtual模式,则使用如下命令:
 
# systemctl enable vncserver-virtuald.service
# systemctl start vncserver-virtuald.service
 
如果要修改RealVNC Server默认的网络监听端口(Server模式下是5900,Virtual模式下是5999),可以在common.custom中添加RfbPort参数指定为你想要的端口号。
 
common.custom中的那些参数可以通过RealVNC官方文档去查,当然,官方文档我觉得很零散,不好找,这里告诉你两个办法,可以通过类似
 
# vncserver-x11 -help
 
这样的命令查看一些详细的参数说明。还可以通过运行vncviewer,在图形化客户端里面,通过配置界面(好像是“高级”部分)看到几乎所有能够支持的参数名字以及值。
 
这里还要特别说明一点,在Fedora 22上安装RealVNC Server并配置好所有参数后,发现Server模式无法启动,监听端口起不来。最后想了很多费劲的办法查阅官方文档,才知道这是一个兼容性的问题,由于Fedora 22的Xorg服务器版本很高,估计兼容性方面让RealVNC Server出了问题,找不到正在运行的X服务器。解决办法是(原文,我就不翻译了,反正也很简单,看得懂):
 
The X server on Fedora 22 is not in the XServerBinaries VNC parameter list. If /usr/libexec/Xorg is added to the list VNC Server starts as expected. 
 
Edit (or create if it doesn't exist) /etc/vnc/config.d/vncserver-x11-serviced and add the following line:
 
XServerBinaries=/usr/libexec/Xorg
 
这里说明一下,/etc/vnc/config.d/vncserver-x11-serviced是官方文档中说明的vncserver-x11-serviced的配置文件路径,文档中确实是说了的,通过man vncserver-x11-serviced命令查看其手册也是会有说明的。
 
补充说明(非常重要):
 
以下补充说明内容非常重要!在Fedora 22中,由于开始向Wayland显示服务器过渡,GDM登录管理器默认是使用wayland的,如果你使用RealVNC的Server模式,这会导致vncserver-x11-serviced启动后找不到X服务器,从而引起vncserver-x11-core运行失败,监听端口起不来!导致你无法用VNC远程连接到主机进行GDM用户登录!因此,要修改GDM的配置,让其默认使用X服务器而不是Wayland。方法是修改/etc/gdm/custom.conf文件,找到里面的
 
#WaylandEnable=false
 
这一项,把前面的#去掉,保存好后重启机器即可生效。这时你会发现,你可以用VNC远程到主机并显示GDM登录界面了,但别高兴太早!当你选择某个用户账号并成功登录后,你会发现VNC连接断开了。这时,通过进程查看发现,vncserver-x11-core变成了僵尸进程,停止了工作,导致监听端口宕掉了。而这时你会发现主机上登录进去的桌面环境会话又启动了一个Xorg服务,而GDM登录界面使用的那个Xorg服务也仍然存在。这可能是导致RealVNC的vncserver-x11-core无法判别到底使用哪个Xorg服务从而引起僵死。我们知道,GDM必须要使用一个Xorg以便用于显示登录界面会话,而Fedora 22之前的老版本Linux估计是让登录后进入的桌面会话使用与GDM相同的Xorg,所以RealVNC是能够正常工作的。而现在Fedora 22在逐渐向Wayland过渡,导致出现GDM和登录进去的桌面会话分别使用各自独立的Xorg进程,引起RealVNC兼容性问题。没有关系,我们换个思路,如果登录进入桌面环境后,让当前登录的账户启动一个在用户模式下工作的vncserver-x11进程就能够解决问题了,连监听端口都不用换!通过试验也证实了,当这个桌面会话用户在主机注销后,vncserver-x11用户模式进程随机销毁,而使用先前GDM登录会话的对应的Xorg服务的那个vncserver-x11-serviced连带启动的vncserver-x11-core僵尸进程又重新恢复正常监听了!这样就可以保证远端主机仍然可以通过VNC客户端远程连接上来并显示GDM登录界面!
 
那么,现在就要解决一个问题,如何让主机在登录成功进入GNOME桌面后自动执行我们自定义的脚本?很简单,在主机登录账户的家目录下输入如下命令:
 
$ cd ~/.config/autostart
$ vi autostart.desktop
 
进入vi编辑环境,输入如下内容:
 
[Desktop Entry]
Name=autostart
Comment=Desktop Session Autostart
Exec=/usr/local/bin/autostart
Terminal=false
Type=Application
StartupNotify=true
X-GNOME-FullName=Desktop Session Autostart
 
保存并退出vi,然后切换到root,输入如下命令:
 
# cd /usr/local/bin
# vi autostart
 
进入vi编辑环境,输入如下内容:
 
#!/bin/bash
echo "desktop session autostart" > ~/autostart.log
/usr/local/bin/vncserver-x11 -stop
/usr/local/bin/vncserver-x11 -display :1 &
 
保存并退出vi,输入命令:
 
# chmod 755 /usr/local/bin/autostart
 
重启主机,这时你就可以用VNC客户端远程连接主机,在GDM中登录,登录成功后会断开连接。你得麻烦一下,再重新用VNC客户端远程连接主机,就可以进入到远程主机的桌面环境了。
 
好了,至此,RealVNC Server就在Fedora 22中安家落户了,使用效果非常好。从目前情况来看,只有Fedora 22有这种情况存在,RHEL/CentOS 6.x/7都不存在上面结尾说的这种情况(登录后不会断开连接又要重连)。当然,随着Wayland的普及,Fedora 23开始就要全面使用Wayland替代老的X服务了,RealVNC现在也在开发基于Wayland服务的新版VNC,相信兼容性问题会得到解决。
 
再修订:
 
默认情况下,RealVNC Viewer会因为每次VNCServer(无论是X11 Server模式还是Virtual模式)启动时Signature改变而发出警告,甚至会在当前连接的VNCServer停止并启动一个新VNCServer时因Signature变化而终止客户端连接,起不到平滑自动连接的效果(特别是上面Server模式下),每次还得重新再启动VNC Viewer很麻烦。这里可以通过修改VNC Viewer的配置来做到不进行Signature警告,从而可以实现VNC Viewer在连接Fedora 22环境中运行的Server模式下的VNCServer-X11服务时自动从GDM的连接平滑自动连接到进入GNOME桌面,方式是:在RealVNC Viewer的设置中,找到“Expert”,在配置参数列表中找到“VerifyId”,默认值是2,改为0即可(其实在修改处已经有说明,告诉你了VerifyId取值的含义)。到此为止,一切都完美了。

VNC的安装配置 http://www.linuxidc.com/Linux/2013-05/84941.htm

CentOS 6.3安装和配置VNC http://www.linuxidc.com/Linux/2013-05/84668.htm

Linux下强制不检测依赖安装VNC http://www.linuxidc.com/Linux/2013-05/84075.htm

CentOS6 VNC服务安装配置 http://www.linuxidc.com/Linux/2013-04/82510.htm

CentOS下VNC配置和安装  http://www.linuxidc.com/Linux/2013-05/83975.htm

VNC远程控制安装和设置 http://www.linuxidc.com/Linux/2013-01/77769.htm

Windows通过VNC访问Ubuntu  http://www.linuxidc.com/Linux/2012-10/73043.htm

Windows远程桌面访问Ubuntu 12.04 之安装VNC http://www.linuxidc.com/Linux/2012-07/64801.htm

更多Fedora相关信息见Fedora 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=5

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-12/125922.htm


推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Linux防火墙配置—允许转发
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
author-avatar
qqjayzhe
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有