VNC实现远程桌面共享linux/windows

                                                   linux下用VNC实现远程桌面共享

1. VNC简介 

欧洲剑桥大学教授写的程序。

简单地说:VNC它是一个桌面共享系统。它的功能,类似于windows中的远程桌面功能;但和平台无关;几乎适用于全部的操作系统或者java平台。Vnx 在windows下的客户端有 realvnc(收费)推荐使用ultravnc/tightvnc(免费)

VNC软件由服务器端VNC Server和客户端VNC Viewer组成,可以单独安装其中一部分。远程计算机必须安装服务器端,才能通过本地计算机的客户端进行远程管理。

2.Linux下VNC的启动和设置

在Red Hat Enterprise Linux 下,系统自带了VNC软件,用如下命令查看是否已安装了VNC软件:

#rpm –qa|grep vnc   查看Linux系统中是否已安装了VNC

如果系统中没有安装VNC则可以去http://www.realvnc.com/下一个装上,或者从linux安装盘上安装,这里不再多说。

VNCServer 的启动和设置

(1) 启动VNC Server: 

#vncserver   第一次启动时要求你生成口令文件

You will require a password to access your desktops.

 Password:   设置远程管理密码

 Verify:     确认密码

用vncpasswd命令生成口令文件,当然也可以用此命令更改密码。

(2)设置VNC Server

编辑$HOME/.vnc/xstartup文件($HOME指Linux用户目录,我这里是root超级用户目录)。

#vi root/.vnc/xsatartup

去掉以下两句的注释:

unset SESSION_MANAGER

exec /etc/X11/xinit/xinitrc

因为VNC自带默认的TWM窗口管理器用起来很不爽,所以把twm &这句改为:gnome –session &,如果是用KDE桌面的,则改为 kde-session &。以便能远程使用GNOME和KDE桌面。重启vnc:

#sudo /sbin/service vncserver restart

在 ~/.vnc 目录下的日志文件里面显示如下,监听5801/5901

 vncext:      VNC extension running!

 vncext:      Listening for VNC connections on port 5901   (通过VNC-viewer连接)

 vncext:      Listening for HTTP connections on port 5801 (通过http来访问的)

 vncext:      created VNC server for screen 0

按以上的设置情况下,要服务器关闭防火墙才能使用VNC Viewer进行连接;或者在防火墙中打开5901端口 5901端口(vnc默认的端口是5800、59000 。要打开的5801、5901其中的“1”是桌面号。)

#vi /etc/sysconfig/vncservers

去掉VNCSERVERS=”1:root”前面的注释

如果允许多个不同的用户进行远程管理的可以如下方式添加多个:

VNCSERVERS=”1:root 2:ZhangSan 3:XXXX”

VNCSERVERARGS[1]="-geometry 1024x768"  --配置启动的桌面。配置不同的启动界面方法和 和多用户的一样。

VNCSERVERARGS[2]="-geometry 1024x768"

VNCSERVERARGS[3]="-geometry 1024x768"

查看vnc启动情况

 netstat –tulnp

关闭服务器上自己的vnc链接

 vncserver -kill :桌面号

 例如:关闭上面的vnc链接

 vncserver -kill :1 

添加系统服务

Chkconfig –level 35 vncserver on 

以后开启和关闭vnc 可以用

Service vncserver start   开启(还可以使用vncserver启动)

Service vncserver stop    关闭

Service vncserver status  查看 

远程桌面设置part2:利用putty进行VNC + ssh tunneling 

直接使用VNC viewer来进行访问,有两点不利因素: 
1. 口令传输是明文,很容易被侦听到. 
2. 防火墙需要打开59xx端口,这在通常的单位里是不可能的. 
幸运的是,我们有ssh这个强大的工具,象X11 Forwarding(另文论述),我们可以使用ssh隧道来保护通讯过程,下面就进行简单介绍. 
假设VNC server配置运行在服务器 myserver (ip地址为:192.168.x.x)的屏幕1,也就是侦听 192.168.x.x:5901, 用户名为root 

情形一: VNC server配置客户端为Linux 

这种情形很简单,一般的Linux发行版本里面都默认安装了ssh套件. 

1. 用ssh登录到服务器 
ssh -L 5901:localhost:5901 -l foo myserver或者直接用ip地址 
ssh -L 5901:localhost:5901 -l foo 192.168.x.x

(注释:使用ssh 建立一条ssh加密的通道 ssh -L 源端口:localhost:目的端口 要访问的主机{和vpn 通道是不一样的})

(示例:ssh -L 5901:localhost:5901 root@192.168.55.250)

2. 在本机的另外开的终端上,运行VNC viewer (或其它的类似工具) 
VNC viewer localhost:1 

情形二: VNC客户端为windows 

1. 下载一个ssh客户端,个人推荐putty,只有一个程序,不需要安装,简单而功能齐全. 到这里下载http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html (有中文版)
下载putty.exe到桌面上直接运行即可。 
2. 运行putty,输入服务器的ip地址,输入一个名字,这里myserver作为session的名字,按save保存。
3. 单击对话框左边的tunnels来选择相关设置,在source port里输入5901,在Destination里输入localhost:5901,按Add添加
4. 单击左边session,回到session设置,按save重新保存。按open即可登录到服务器。 
5.  (windows下vnc的版本有ultravnc/tightvnc 比较有名流行)运行VNC-viewer (如果没有,到这里下载http://www.real VNC.com/download.html,只要一个exe的文件就行) ,在Server里输入localhost:1,见附图三, 输入口令后一个Linux的桌面就会出现在windows里,并且是非常安全的.

情形三: 在windows通过浏览器访问 

1.windows上要按照java支持,安装 jdk 2.在浏览器输入vnc服务器的地址:端口号,就可以访问了。(注:如果使用ssh连接工具开启的加密通道的话,vnc服务器的地址是locahost:5801我的例子:192.168.55.12:5801



版权所有:《太阳花工作室》 => 《VNC实现远程桌面共享linux/windows
本文地址:http://bg.artuion.com/linux/15.html
除非注明,文章均为 《太阳花工作室》 原创,欢迎转载!转载请注明本文地址,谢谢。