Java世界

学习笔记

常用链接

统计

积分与排名

天籁村

新华网

雅虎

最新评论

VNC远程控制方法

VNC 简介』
网络遥控技术是指由一部计算机(主控端)去控制另一部计算机(被控端),而且当主控端在控制端时,就如同用户亲自坐在被控端前操作一样,可以执行被控端的应用程序,及使用被控端的系统资源。
VNC
Virtual Network Computing )是一套由 AT&T 实验室所开发的可操控远程的计算机的软件,其采用了 GPL 授权条款,任何人都可免费取得该软件。 VNC 软件主要由两个部分组成: VNC server VNC viewer 。用户需先将 VNC server 安装在被控端的计算机上后,才能在主控端执行 VNC viewer 控制被控端。
(在 windows 中也由一套著名的网络遥控软件 ――Symantec 公司推出的 pcAnywhere
VNC server
VNC viewer 支持多种操作系统,如 Unix 系列( Unix Linux Solaris 等), windows MacOS ,因此可将 VNC server VNC viewer 分别安装在不同的操作系统中进行控制。如果目前操作的主控端计算机没有安装 VNC viewer ,也可以通过一般的网页浏览器来控制被控端。
整个 VNC 运行的工作流程如下:
1 VNC 客户端通过浏览器或 VNC Viewer 连接至 VNC Server
2 VNC Server 传送一对话窗口至客户端,要求输入连接密码,以及存取的 VNC Server 显示装置。
3 在客户端输入联机密码后, VNC Server 验证客户端是否具有存取权限。
4 若是客户端通过 VNC Server 的验证,客户端即要求 VNC Server 显示桌面环境。
5 VNC Server 通过 X Protocol 要求 X Server 将画面显示控制权交由 VNC Server 负责。
6 VNC Server 将来由 X Server 的桌面环境利用 VNC 通信协议送至客户端,并且允许客户端控制 VNC Server 的桌面环境及输入装置。

VNC 的安装与使用』
本人的操作环境:被控端 Redhat9.0 ,主控端 Windows XP
1
VNC Server
VNC Server
下载地址: http://gwbn.onlinedown.net/soft/1271.htm

2 .安装。
vnc-3.3.7-x86_linux.tar.gz (
如果是源代码请看包里的说明 ) 当下载了 VNC Linux 版本后,可以解压文件到一个文件夹中,例如 /home/vnc ,然后复制文件 vncserver vncpasswd Xvnc /usr/bin 目录中。假如想要能够通过 VNC 服务器的整合 Java 界面远程控制 Linux 电脑,也得需去建立一个子目录 /usr/local/vnc/classes 。在建立此子目录之后,复制 VNCJava.class 文件到此目录中。(一般 redhat 9.0 自带以上文件,所以直接用终端执行就可以)。
3.
Linux 上启动 VNC Server
执行 vncserver 命令:
[root@linux root]# vncserver
You will require a password to access your desktops.
Password: ----
为了不想任何人都可以任意遥控此计算机。因此当第
Verify: ---1
次启动 VNC server 时,会要求设置网络遥控的密码。
New ‘X’ desktop is linux:1 ----
一定要记住这一行稍后会用到。
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/linux:1.log
(经上述步骤后,便已启动了 VNC Server 。如果你想要更改 VNC Server 的密码,只要执行 vncpasswd 命令即可。)

5. 从浏览器远程遥控。
启动 VNC Server 后直接打开浏览器,在地址栏中输入被控端的网址或 IP 地址,并在网址后加上 5800 +显示编号 的端口号即可操控该计算机。
例如: http://192.168.01.:5801 ( 如果显示编号为 1 ,一般第一次设置的显示编号都是 1 ,就用 5800 1 5801 )

如果看到窗口,就说明你成功,在密码框输入密码,就能远程控制了。

6 FAQ

A. 如何以图形界面登录被控端?

编辑~/.vnc/xstartup

#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
gnome-session &
startkde &
twm &

gnome-session是启动Gnome图形界面;startkde是启动KDE图形界面;twm是启动文本界面。三者选其一。

A. 如何开机时自动启动vnc服务

打开“系统设置”-->"服务器设置"-->"服务",勾选上vncserver,“保存”。

修改 /etc/sysconfig/vncservers

VNCSERVERS="1:root 2:phred 3:sysadmin" 1代表“桌面1”,root代表用户名;可同时启动多个用户桌面
VNCSERVERARGS[1]="-geometry 800x600 -alwaysshared -depth 24"

-alwaysshared代表允许多用户同时登录 -depth代为色深,参数有8,16,24,32。


A
.为什么连接后,不能显示桌面,而只有一个 Terminal 窗口?
试着修改 /root/.vnc/xstartup, 把最后一行 twm& 改成 gnome-session& or kde&( 据说 KDE 在目前的 VNC Viewer 上的表现不太稳定 )

B 为什么重新启动 VNC Server 后,连接不上了?
因为重新启动 VNC Server 时,系统会指定一个新的显示编号,需使用此新的编号,否则就无法连接


查看vnc已启用的桌面号及监听进程

[root@linux /]# netstat -tlnp |grep vnc

vncserver 命令带有一些很有用的参数,用vncserver --help 查看。
简单解释一下:
vncserver [:] [-name ] [-geometry x] [-depth ]
[-pixelformat format]
vncserver -kill :display

:
vnc服务的display号,可以自行指定,尽量不要使用系统默认的以保证安全,必须为非0的正整数
vncserver :99
使用时必须输入正确的display号才能连接;用浏览器要在端口号加上display号,默认端口5800,远程连接输入 XXX.XXX.XXX.XXX:5899

-name 指定vncserver桌面名字
比如要让名字显示为 “红帽”
vncserver -name 红帽

-geometry x指定显示桌面的分辨率,默认为1024x768
vncserver -geometry 800x600
这个命令实际中很有用,例如本地分辨率为1024x768 如果不设定远程vnc服务分辨率就会造成桌面显示不全的问题。

-depth 指定显示颜色,设定范围8~32
vncserver -depth 16
用16bits颜色显示

-pixelformat 指定色素格式 与-depth大致相同,只是表示方法不一样
vncserver -pixelformat RGB888
用24bits颜色显示

vncserver -kill :display
结束vnc服务及远程桌面
vncserver -kill :1
其它更详细的使用请用man查看。

vnc内定的窗口管理器是twm与大家使用的可能不同,通过修改vnc的配置文件可以更换为自己喜欢的,方法如下:
修改用户目录下的 .vnc/xstartup 文件
#!/bin/sh
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &
将#!/bin/sh后面的内容全部注释掉,改成
~/.Xclients
保存文件
现在可以测试修改是否成功,先kill vncserver服务
vncserver -kill :

pa aux|grep Xvnc
kill PID
重新启动vncserver ,用vncviewer连接远程桌面是不是已经变成自己喜欢的类型了。

在 前面有vnc server 设置的文章(http: //bbs.chinaunix.net/forum/viewtopic.php?t=368552&highlight=yunqing) 里, 我们已经可以在一个linux的服务器上运行vncserver来进行远程访问了,但需要注意的是,如果直接使用vncviewer来进行访问,有 两点不利因素:
1. 口令传输是明文,很容易被侦听到.
2. 防火墙需要打开59xx端口,这在通常的单位里是不可能的.
幸运的是,我们有ssh这个强大的工具,象X11 Forwarding(另文论述),我们可以使用ssh隧道来保护通讯过程,下面就进行简单介绍.

假设vncserver运行在服务器 myserver (ip地址为:192.168.x.x)的屏幕1,也就是侦听 192.168.x.x:5901, 用户名为foo

情形一: vnc客户端为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
						
				
		

2. 在本机的另外开的终端上,运行vncviewer (或其它的类似工具)
vncviewer 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. 运行vnc-viewer (如果没有,到这里下载http://www.realvnc.com/download.html,只要一个 exe的文件就行),在Server里输入localhost:1,见附图三, 输入口令后一个linux的桌面就会出现在windows里,并且是非常 安全的,Cool?

posted on 2008-06-14 09:58 Rabbit 阅读(610) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: