vnc在linux下的搭建

感觉VNC还是LINUX下不二的远程遥控软件。但不是太贴近中国用户,比如LINUX下无法按热键呼出中文输入。虽然有一点点的不足,仍然无法阻止其在LINUX系统中的地位。让我们看下它的魅力吧。首先,复制粘贴做的很随意。本机复制了,直接在远程机器里按粘贴即可。很方便的。

网络遥控技术是指由一部计算机(主控端)去控制另一部计算机(被控端),而且当主控端在控制端时,就如同用户亲自坐在被控端前操作一样,可以执行被控端的应用程序,及使用被控端的系统资源。
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自带以上文件,所以直接用终端执行就可以)。

在FC8上直接YUM下,巨方便。我从来不看怎么安装,这步骤的。

3.在Linux上启动VNC Server
执行vncserver命令:
[root@linux root]# vncserver
You will require a password to access your desktops.
Password: ----为了不想任何人都可以任意遥控此计算机。因此当第
1次启动VNC server时,会要求设置网络遥控的密码。这个就是你的登陆VNC的密码一定要够安全。好像哪里的文章上讲可以配置用户的。不过80%的人群不会习惯区分用户的。因为VNC可以虚拟N个桌面的。霍霍,配合LINUX的用户很好很强大。
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。



这步有点高深了。。。也复杂点,其实客户端可以完成80%的配置。而我有更好的方法,因为SSH启动是默认的。SSH上去打开VNC就行了。也不过一条命令。更多的是安全。




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  能玩到这步骤的都是我崇拜的对象。哈



VNC 问题集锦

1.VNC 是什么?

VNC有两种定义:一种是软件、一种是协议

VNC是 Virtual Network Computing

软件是指是GNU public license下的符合VNC协议的共享软件,.最开始是AT&T的英国实验室 [现在这帮人成立了RealVNC公司] 开发的. 主要是让计算机可以远程控制另外一台计算机。现在很多公司在VNC的基础上开发出了各种各样的VNC. 能够运行在各个操作系统上。

VNC协议。是指控制方和被控制计算机之间的通讯协议。VNC用的协议叫RFB .[很多人不知道吧] RFB 的协议在这里。 http://realvnc.com/docs/rfbproto.pdf

2.VNC 的优点?

第一、VNC的最大优点就是跨平台。因为不同的操作系统的界面处理方法都不一样,所以就有人开发了不同的VNC版本,因为都符合VNC协议,所以兼容性比较好。还有人做了Java版的客户端,在能够运行JVM的机器上都能运行客户端。

[ 当然微软/Uinx/Linux等也有自己的解决方案,如Terminal/PcAnywhere/Xceed等等。但是他们不开放代码...]

第二、版本多,开放源代码,每个人都可以不断改进它。

[这是开放的好处]

第三、速度。速度还是挺快的,如果你的网络带宽好的话。



3. VNC PK MS 终端

VNC : 不用Windows的账户/密码。这样对于一次性的用户很方便。否则每次要在Windows里面加用户可是很不安全的阿。

Windows: 对于Windows Server, 可以多用户登录使用。VNC只能两个人(控制和被控制的计算机)使用。

VNC: 可以让控制和被控制的屏幕同时显示、操作。这样可以做Demo,共享交流等。Windows 没这个功能吧!



VNC的安装与使用- -



http://bangnet.blogdriver.com/bangnet/628595.html
VNC的安装与使用。
说明:文章内容比较简单,献给那些初学者作为参考。
文章分为两部分,第一部分为VNC简介,第二部分为VNC的安装与使用。
文章为小弟结合书籍与小弟的实际操作总结出来的,如有错误与疏漏之处,还请指出。
fish_ys 2003.8.25

『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的安装与使用』
本人的操作环境:被控端 Redhat8.0,主控端Windows XP。
1. 载VNC Server与VNC viewer.
VNC Server下载地址:http://www.linuxeden.com/download/softdetail.php?softid=744
VNC viewer下载地址:http://download.pchome.net/php/dl.php?sid=2603
2.安装。
rpm –Uvh vnc-3.3.6-2.i386.rpm (如果是源代码请看包里的说明)
安装winvnc.exe
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命令即可。)
4.在Microsoft Windows上运行VNC Viewer
直接运行“vncviewer.exe”,系统会出现”Connection details”对话框。
在“Connection details”对话框中的“VNC server”文本框中输入VNC Server的IP地址(或主机名及显示装置编号,(请看3。在Linux上启动VNC server的这一行,New ‘X’ desktop is linux:1 得到此信息),例如:192.168.0.1:1(冒号后面的1是执行VNC Server生成的显示装置编号),单击“OK”按钮后,VNC Server即会开始检查所输入的信息,若是信息错误,系统会出现“Failed to connect to server”的错误信息:若是信息正确,则会接着出现“VNC Authentication”对话框。
若是在“VNC Authentication”对话框中输入的密码正确,就可以成功地打开Linux的桌面窗口。
5. 从浏览器远程遥控。
启动VNC Server 后直接打开浏览器,在地址栏中输入被控端的网址或IP地址,并在网址后加上“:5800+显示编号”的端口号即可操控该计算机。
例如:http://192.168.01.:5801 (如果显示编号为1,一般第一次设置的显示编号都是1,就用5800+1=5801。)

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

B. 为什么重新启动VNC Server后,连接不上了?
因为重新启动VNC Server时,系统会指定一个新的显示编号,需使用此新的编号,否则就无法连接。
(以上只是本人遇到的一些问题,而且用VNC也不是很多,很不全面,还望多提宝贵意见)

为了使vncserver在每次启动时保持不变的端口号
我在使用vnc 终于在wingdows端连接上redhat 了,可是看到的是xteam
的桌面,而我正在用的是kde 桌面。请教大虾如何解决?
VNCPASSWD 与系统的passwd 生成的密码是同一个吗?还是不同的。
或者说通过vnc访问的远程机器的密码是否要与vnc服务器的root 用户
密码一致。
谢了。
设置vncserver启动变量:
为了使vncserver在每次启动时保持不变的端口号(5901)
在/etc/rc.d/rc.local文件中添加命令:
rm -f /tmp/.X11-unix/X*
rm -f /.vnc/*.pid
rm -f /.vnc/*.log
这样,每次启机,系统会先把上次非正常关机时留下的临时文件删除。
linux版vnc server的改进:
linux上的vnc server内定的桌面管理环境是twm,实在是太简陋了.
修改$HOME/.vnc/xstartup这个文件.
把所有内容的行前加上#,再在接尾部份加上:
startkde &
你当然可用你喜好的桌面代替.我这是用kde来代替twm,速度会慢少少,但用起来方便不少.
注意要重新启动vnc server.
修改/usr/bin/vncserver文件,把其中的相关行该为
$geometry 800X600;
$depth 16;
这样vncserver启动时就是800X600 16t的桌面了。
另外VNCSERVER有自己单独的密码和ROOT的密码是两回事

首先感谢,我现在已经可以连接上redhat 的kde桌面了。
可是我的/usr/bin 下无vncserver 文件。
所以看起来,自比较小,尤其汉字变形。
请教vncserer 文件的功能实什么,如何编写。
互联网正是个好东西,也正因为有了这么多无私的奉献。这里的风景才如此动人
一般我们都是在linux主机上来操作的,如果有一天我在外地或这网络其他电脑上,刚好又要操作到linux主机。有很多方法,下面我介绍一种能用图形和网页形式的控制软件就是vnc 了,vnc有win和linux版本的有两个程序,一个是server端另一个是viewer端,被人控制的叫server端控制者叫viewer端。
安装linux7.2版本时就默认安装好了vnc软件了。我们只要启动它就好了。
在命令提示符输入vncserver提示要输入密码,请输入两次密码最好要复杂点的,不然密码被破那就惨拉!
好了,vnc就已经开始运行了。

下来到网络其他客户电脑上安装好vnc viewer 端后运行它:
输入你的 linux主机的ip地址和窗口号 如:
192.168.0.1:1完成后再输入正确的密码就可以进入了。

怎么进入后看到的界面不是我的gonme界面呢?这个可以解决的。登陆linux主机编辑/$home/.vnc/xstartup把里面所有的行前面都加上#号让他们都失效自己再加上一行
gnome-session &
保存后在到客户机上登陆一次就可以看到漂亮简洁的gnome界面拉!其他操作就和linux主机里一样。

你也可以在网络其他电脑里用ie浏览器来进入:在ie地址栏输入:
http://linux主机ip:5801也可以打开画面输入正确的密码就进入linux主机。