windows 以VNC方式访问centos 7.x服务器

来源:互联网 发布:unity3d官方视频教程 编辑:程序博客网 时间:2024/05/15 23:51

VNC简介

VNC(Virtual Network Computing),为一种使用RFB协议的屏幕画面分享及远程操作系统软件。此软件借由网络,可发送键盘与鼠标的动作及即时的屏幕画面。
VNC与操作系统无关,因此可跨平台使用,例如可用Windows连接到某Linux的电脑,反之亦同。甚至在没有安装客户端程序的电脑中,只要有支持JAVA的浏览器,也可使用。
wiki链接

VNC原理

VNC系统由客户端,服务端和一个协议组成。
VNC的服务端目的是分享其所运行机器的屏幕,服务端被动的允许客户端控制它。VNC客户端(或Viewer)观察控制服务端,与服务端交互。VNC协议Protocol(RFB)是一个简单的协议,传送服务端的原始图像到客户端(一个X,Y位置上的正方形的点阵数据),客户端传送事件消息到服务端。
服务器发送小方块的帧缓存给客户端,在最简单的情况,VNC协议使用大量的带宽,因此各种各样的方法被发明出来减少通讯的开支,举例来说,有各种各样的编码方法来决定最有效率的方法来传送这些点阵方块)
协议允许客户端和服务端去协议哪种编码会被使用,最简单的编码,被大多数客户端和服务端所支持的是,从左到右的像素扫描数据的原始编码,当原始的满屏被发送后,只发送变化的方块区域。这种编码在幁间只有小部分屏幕变化的情况下工作的非常好(像是鼠标键在桌面移动的情况,或在光标处敲击文字),不过如果大量的像素同时变化带宽将会增加的非常高,像是拖动一个窗口或观看全屏录像。
VNC默认使用TCP5900端口。

VNC软件

由于VNC以GPL授权,派生出了几个VNC软件:
RealVNC:由VNC团队部分成员开发,分为全功能商业版及免费版。
TightVNC:强调节省带宽使用。
UltraVNC:加入了TightVNC的部分程序及加强性能的图型映射驱动程序,并结合Active Directory及NTLM的账号密码认证,但仅有Windows版本。
Vine Viewer:MacOSX的VNC客户端。
这些软件各有所长,例如UltraVNC支持文件传输以及全屏模式。而这些软件间大多遵循基本的VNC协议,因此大多可互通使用。

centos 7.x安装配置VNC服务器

引用https://linux.cn/article-5335-1.html
首先,服务器端需要一个可用的桌面环境。

1.安装X-Window

##installing x windowsyum check-updateyum groupinstall "X Window System" ##install gnome classic sessionyum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts## 设置默认启动图形界面  不懂这里的命令unlink /etc/systemd/system/default.targetln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.targetreboot 

在服务器重启之后,我们就有了一个工作着的 CentOS 7 桌面环境了。

现在,我们要在服务器上安装 VNC 服务器了。

2 安装VNC服务器

 yum install tigervnc-server -y

运行此命令VNC服务器安装完成!

3 配置 VNC

然后,我们需要在 /etc/systemd/system/ 目录里创建一个配置文件。我们可以将 /lib/systemd/sytem/vncserver@.service 拷贝一份配置文件范例过来。修改配置文件。这里我使用VIM编辑器打开。

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

<>内的内容需要替换,如果服务器运行在root权限下,可以使用root替换,如果是自己创建的用户,则替换成你的用户名。
第二条命令,则替换成root用户的目录root

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

之后重启systemd。

systemctl daemon-reload

最后还要设置一下用户的 VNC 密码。要设置某个用户的密码,必须要有能通过 sudo 切换到用户的权限,这里我用root 的权限,执行“vncpasswd”就可以了。
密码长于6个字符。

4 开启服务

用下面的命令(永久地)开启服务:
systemctl enable vncserver@:1.service
启动服务
systemctl start vncserver@:1.service

5 防火墙设置

我们需要配置防火墙来让 VNC 服务正常工作。
centos7不同于之前的版本了。

firewall-cmd --permanent --add-service vnc-serversystemctl restart firewalld.service

安装到这里我遇到了一问题,系统提示:Unit firewalld.service is masked
我是这样解决的:
systemctl unmask firewalld
具体的原因就是因为之前说的centos7 不同于以前的版本。想搞清楚的同学链接在此点这里
之后再尝试启动服务。

6 使用VNC客户端连接服务器

现在服务器端已经配置成功,接下来使用VNC客户端远程控制VNC服务器。
前面说了一些VNC软件。这里提供了软件链接Tightvnc viewer。
现在就可以用 IP 和端口号(如:192.168.1.1:1 ,这里的端口不是服务器的端口,而是视 VNC 连接数的多少从1开始排序)来连接 VNC 服务器了。
如果没记住公网IP可以使用下面几个命令查看公网接口:
curl bot.whatismyipaddress.com
curl checkip.dyndns.org
curl www.pubyun.com/dyndns/getip
引用自:http://www.programgo.com/article/18512821937/
亲测可用~~!
要用更多的用户连接,需要创建配置文件和端口,请回到第3步,添加一个新的用户和端口。你需要创建 vncserver@:2.service 并替换配置文件里的用户名和之后步骤里相应的文件名、端口号。请确保你登录 VNC 服务器用的是你之前配置 VNC 密码的时候使用的那个用户名。

VNC 服务本身使用的是5900端口。鉴于有不同的用户使用 VNC ,每个人的连接都会获得不同的端口。配置文件名里面的数字告诉 VNC 服务器把服务运行在5900的子端口上。在我们这个例子里,第一个 VNC 服务会运行在5901(5900 + 1)端口上,之后的依次增加,运行在5900 + x 号端口上。其中 x 是指之后用户的配置文件名 vncserver@:x.service 里面的 x 。

systemctl stop vncserver@:1.service 关闭 VNC 服务。

systemctl disable vncserver@:1.service禁止 VNC 服务开机启动。

systemctl stop firewalld.service防火墙。

0 0