本文共 13984 字,大约阅读时间需要 46 分钟。
CentOS
VNC概述 VNC (Virtual Network Console)是虚拟网络控制台的缩写。VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 是在基于 UNIX 和 Linux操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 或 MAC中的任何远程控制软件媲美。在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多数情况下只需要其中的两个命令:vncserver 和 vncviewer。目前,原来的AT&T版本已经不再使用,因为更多有重大改善的分支版本已经出现, 像是RealVNC, VNC tight 和UltraVNC。 Real VNC 是当前最活跃和强大的主流应用。 RealVNC官方网址 : TightVNC官方网址: TigerVNC官方网址: TigerVNC最初基于TightVNC的(从未发布的)VNC 4分支 UltraVNC官方网址 :VNC原理
VNC系统由客户端,服务端和一个协议组成。VNC的服务端目的是分享其所运行机器的屏幕, 服务端被动的允许客户端控制它。 VNC客户端(或Viewer) 观察控制服务端,与服务端交互。 VNC 协议 Protocol (RFB)是一个简单的协议,传送服务端的原始图像到客户端(一个X,Y 位置上的正方形的点阵数据), 客户端传送事件消息到服务端。 服务器发送小方块的帧缓存给客户端,在最简单的情况,VNC协议使用大量的带宽,因此各种各样的方法被发明出来减少通讯的开支,举例来说,有各种各样的编码方法来决定最有效率的方法来传送这些点阵方块) 协议允许客户端和服务端去协议哪种编码会被使用,最简单的编码,被大多数客户端和服务端所支持的是, 从左到右的像素扫描数据的原始编码, 当原始的满屏被发送后,只发送变化的方块区域。这种编码在幁间只有小部分屏幕变化的情况下工作的非常好(像是鼠标键在桌面移动的情况,或在光标处敲击文字),不过如果大量的像素同时变化带宽将会增加的非常高,像是拖动一个窗口或观看全屏录像。 VNC默认使用TCP端口5900至5906,而JAVA的VNC客户端使用5800至5806。一个服务端可以在5500口用“监听模式”连接一个客户端,使用监听模式的一个好处是服务端不需要设置防火墙。 UNIX上的VNC称为xvnc,同时扮演两种角色,对X窗口系统的应用程序来说它是X server,对于VNC客户端来说它是VNC服务器程序。VNC安装配置
安装相应桌面环境与vnc服务端和客户端:[root@ localhost ~]# vi /root/.vnc/xstartup
#!/bin/sh取消这个xstartup文件中下面两行的注释,就是删除行前面的“#”的符号。
[root@localhost ~]# more /etc/sysconfig/vncservers
===========================================================
[root@ localhost ~]# vncpasswd
Password: #输入密码 Verify: #确认密码 [root@ localhost ~]# 8.启动和停止VNC服务 1)启动VNC服务命令 [root@ localhost ~]# service vncserver start 2)停止VNC服务命令 [root@ localhost ~]# service vncserver stop 3)重新启动VNC服务命令 [root@ localhost ~]# service vncserver restart9设置VNC服务随系统启动自动加载
第一种方法:使用“ntsysv”命令启动图形化服务配置程序,在vncserver服务前加上星号,点击确定,配置完成。 第二种方法:使用“chkconfig”在命令行模式下进行操作,命令使用如下(预知chkconfig详细使用方法请自助式man一下) [root@testdb ~]# chkconfig vncserver on [root@testdb ~]# chkconfig --list vncserver vncserver 0:off 1:off 2:on 3:on 4:on 5:on 6:off 10、可能遇到的问题: 1)、黑屏 在Linux里安装配置完VNC服务端,发现多用户登陆会出现黑屏的情况,具体的现象为: 客户端可以通过IP与会话号登陆进入系统,但登陆进去是漆黑一片,除了一个叉形的鼠标以外,伸手不见五指。 原因:用户的VNC的启动文件权限未设置正确。 解决方法:将黑屏用户的xstartup(一般为:/用户目录/.vnc/xstartup)文件的属性修改为755(rwxr-xr-x)。 完后杀掉所有已经启动的VNC客户端: vncserver -kill :1 vncserver -kill :2 (注意:-kill与:1或:2中间有一空格) 最后重启vncserver服务即可! # service vncserver restart 注意:vncserver只能由启动它的用户来关闭,即时是root也不能关闭其它用户开启的vncserver, 除非用kill命令暴力杀死进程。 2)、Windown下如何登陆VNC Server a从浏览器登录(浏览器需要安装JAVA支持库,作为java applet来实现,才能登录控制VNC服务器,可以yum install java*安装) 直接从浏览器中输入如下地址: b从VNC客户端登录 在windows上安装vnc客户端,:x,连接登录。 备注: 输入的格式为IP:桌面号,桌面号要看你自己的配置而定。如192.168.80.128:1 登陆提示connection refused(10061),则是因为linux防火墙的问题,请检查防火墙设置。 后面的尾缀”:x”也是不能少的,要不然老提示failed to connect : connection refused (10061) 11.小结 VNC的详细配置方法到此已经写完,都是在网上搜索的加自己的实践。VNC对于远程调用图形化界面来说非常的轻巧和便捷!Debian9.5 VNC Server远程桌面配置
VNC概述
VNC (Virtual Network Console)是虚拟网络控制台的缩写。VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 是在基于 UNIX 和 Linux操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 或 MAC中的任何远程控制软件媲美。在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多数情况下只需要其中的两个命令:vncserver 和 vncviewer。目前,原来的AT&T版本已经不再使用,因为更多有重大改善的分支版本已经出现, 像是RealVNC, VNC tight 和UltraVNC。 Real VNC 是当前最活跃和强大的主流应用。
VNC 服务是一个远程显示守护进程,它向用户提供一些远程功能,包括:
1、直接控制本地 X 会话; 2、在一台机器上的后台并行 X 会话,即并不显示在物理显示器上而是虚拟显示器。即使用户断开连接,在服务器上运行的所有程序依旧可以运行。VNC默认使用TCP端口5900至5906,而JAVA的VNC客户端使用5800至5806。一个服务端可以在5500口用“监听模式”连接一个客户端,使用监听模式的一个好处是服务端不需要设置防火墙。
在Debian9.5 上开启VNC我尝试了 vnc4server,tigervnc-standalone-server(TigerVNC最初基于TightVNC的(从未发布的)VNC 4分支 ),这两个VNC软件
都不好用,可能是运行vncsearer命令不能生成~/.vnc/xstartup文件的原因,最后选择了tightVNC 这个软件可以实现。我的图形桌面环境是xfce4如果没有安装图形桌面环境的需要安装。一、安装tightvnc软件:
root@debian:~# apt install tightvncserverroot@debian:~# apt install tightvnc-java
被连接的服务器需要安装tightvncserver,如果需要通过浏览器java访问需要安装tightvnc-java
二、启动VNC服务 使用vncserver命令启动VNC服务,命令格式为“vncserver :桌面号”,其中“桌面号”用“数字”的方式表示,每个用户连接需要占用1个桌面 ,启动编号为1的桌面示例如下,如果不指定桌面号(:n)会从最小没用的桌面号启用。==========================================================================
laopi@debian:~$ vncserver :1You will require a password to access your desktops.
Password: #输入远程访问密码
Warning: password truncated to the length of 8. Verify: #重复输入远程访问密码 Would you like to enter a view-only password (y/n)? n #是否输入一个只能查看的密码,选择否Warning: debian:1 is taken because of /tmp/.X1-lock
Remove this file if there is no X server debian:1New ‘X’ desktop is debian:2
Creating default startup script /home/laopi/.vnc/xstartup
Starting applications specified in /home/laopi/.vnc/xstartup Log file is /home/laopi/.vnc/debian:2.log如果在Root用户下执行 vncserver :1命令,这样会让普通用户登录时候输入用户名和密码,屏幕黑了一下,然后又返回了输入用户名密码的界面,因为普通用户主目录下的.Xauthority(~/.Xauthority)文件的所属组和所有者都改成了root ,只有把这个文件改回为普通用户所有者和所属组,普通用户才能正常登录。
命令执行的过程中,是在laopi这个用户提示符下执行同时也是第一次执行,会在此用户的主目录(/)下生成.vnc子目录和相应的配置文件,同时需要输入密码(vncviewer端用此用户访问的密码),这个密码被加密保存在此用户主目录下的.vnc子目录(/.vnc/passwd)中;同时在用户主目录下的.vnc子目录中为用户自动建立xstartup配置文件(~/.vnc/xstartup),在每次启动VND服务时,都会读取该文件中的配置信息。上面的是添加laopi这个用户通过VNC访问权限,如果想添加其他用户访问权限,需要在相应的用户命令提示符下进行上面的操作(如test用户也需要执行[test@ localhost ~]$ vncserver :1 在相应的主目录下生成对应的.vnc子目录)。对不同用户的访问密码更改也需要在相应的命令提示符下操作。
在~/.vnc/目录下还有一个“debian:1.pid”文件,这个文件记录着启动VNC后对应操作系统的进程号,用于停止VNC服务时准确定位进程号,也可以在这个目录下查看已经启动的桌面号,如:debian:n.pid (n代表桌面号)VNC服务运行的默认端口是 :1 ,它代表服务运行的TCP端口(5900+n = 端口号)。在此例中,它运行在 5900+1=5901 。再次执行VNC服务会创建另一个实例,并运行在下一个更高的空闲端口上,例如 :2 或说 5902。
3.VNC服务使用的端口号与桌面号的关系
VNC服务使用的端口号与桌面号相关,VNC使用TCP端口从5900开始,对应关系如下 桌面号为“1” ---- 端口号为5901 桌面号为“2” ---- 端口号为5902 桌面号为“3” ---- 端口号为5903 …… 基于Java的VNC客户程序Web服务TCP端口从5800开始,也是与桌面号相关,对应关系如下 桌面号为“1” ---- 端口号为5801 桌面号为“2” ---- 端口号为5802 桌面号为“3” ---- 端口号为5803 …… 基于上面的介绍,如果Linux开启了防火墙功能,就需要手工开启相应的端口,以开启桌面号为“1”相应的端口为例,命令如下=========================================================================
[root@ localhost ~]# iptables -I INPUT -p tcp --dport 5901 -j ACCEPT [root@ localhost ~]# iptables -I INPUT -p tcp --dport 5801 -j ACCEPT==========================================================================
注意: 在物理内存允许的条件下,Linux系统可以拥有任意数量的VNC服务——它们互相并行。
使用 -kill 开关来关闭VNC服务:laopi@debian:~$ vncserver -kill :1
三、编辑 xstartup 文件
VNC 服务读取 ~/.vnc/xstartup 文件(功能类似于 .xinitrc)。如果需要图形环境,则用户至少需要定义一个桌面环境来启动。例如:启动xfce41、在修改xstartup文件之前,请备份原始文件:
laopi@debian:~$ mv -v .vnc/xstartup .vnc/xstartup.backup2、使用 -kill 开关来关闭第一次启动的VNC服务
laopi@debian:~$ vncserver -kill :1#!/bin/sh
unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4============================================
4、确保该文件有可执行权限:
laopi@debian:~$ chmod u+x ~/.vnc/xstartup
5、权限像对待 ~/.ssh 一样保护 ~/.vnc 是很好的做法,虽然并非必须。执行下面的命令来达到该目的:
laopi@debian:~$ chmod 700 ~/.vnc
四、测试VNC服务
第一种方法是使用VNC Viewer软件登陆测试,操作流程如下 启动VNC Viewer软件 --> Server输入“192.168.1.100:1” --> 点击“OK” --> Password输入登陆密码 --> 点击“OK”登陆到X-Window图形桌面环境 --> 测试成功 第二种方法是使用Web浏览器(如Firefox,IE,Safari)登陆测试,操作流程如下 地址栏输入192.168.1.100:1:5801/ --> 出现VNC viewer for Java(此工具是使用Java编写的VNC客户端程序)界面,同时跳出VNC viewer对话框,在Server处输入“144.194.192.183:1”点击“OK” --> Password输入登陆密码 --> 点击“OK”登陆到X-Window图形桌面环境 --> 测试成功 (注:VNC viewer for Java需要JRE支持,如果页面无法显示,表示没有安装JRE,可以到http://java.sun.com/javase/downloads/index_jdk5.jsp这里下载最新的JRE进行安装) 五、修改VNC访问的密码 使用命令vncpasswd对不同用户的VNC的密码进行修改,一定要注意,如果配置了不同用户的VNC需要分别到各自用户中进行修改,例如在我的这个实验中,laopi用户需要修改,修改过程如下:==========================================================================
laopi@debian:~$ vncpasswd Password: #输入密码 Verify: #确认密码 laopi@debian:~$===========================================================================
六、让TightVNC随系统开机通过systemd自动启动
1、首先,创建一个新的名为单元文件/etc/systemd/system/vncserver@.service
root@debian:~# vi /etc/systemd/system/vncserver@.service
2、将以下内容复制并粘贴到其中保持。 一定要将选项User=laopi的用户名改为用于登录的用户名(我的普通用户名为laopi)。最好用普通用户
=====================================================================
[Unit] Description=Start TightVNC server at startup After=syslog.target network.target[Service]
Type=simple User=laopi PAMName=login PIDFile=/home/%u/.vnc/%H%i.pid ExecStart=/usr/bin/vncserver -depth 24 -geometry 1024x768 %i3、接下来,让系统知道新的单元文件。
root@debian:~# systemctl daemon-reload
4、启用单元文件。
root@debian:~# systemctl enable vncserver@:1.service
这个命令启用桌面号为:1 你可以启用:2,:3或:n只要把:1改成对应的,通过这个命令也使得系统开机直接启用相应的桌面
下面的命令只有第一次启用VNC时候用到,配置好了 以后启动机器不需要在执行了
5、停止VNC服务器的当前实例(如果它仍在运行)。laopi@debian:~$ vncserver -kill :1
6、然后启动它,因为您将启动任何其他systemd服务。
root@debian:~# systemctl start vncserver@:1.service
转载地址:http://yvodi.baihongyu.com/