在Windows下远程桌⾯连接Linux-VNC篇
作者:⾼张远瞩(HiLoveS)
转载请保留该信息
VNC是由AT&T试验室开发,是⼀款优秀的远程控制⼯具软件,后来以GPL授权的形式开源。经过⼏年的发展,现在的VNC已经不单指某个软件,⽽是⼀类软件的通称。下⾯介绍Linux下常⽤的两个VNC软件。
VNC的原理就是不停的对窗⼝界⾯截屏,再将图像传输给客户端,同时VNC服务器端接管服务器端的键盘、⿏标控制权,客户端可以通过服务器端操纵键盘⿏标。⽐较类似Windows下的pcAnywhere。
⼀、Windows 端设置
先讲Windows端是因为,下述的两个VNC可以⽤同⼀个客户端连接。
在Windows平台上,客户端我选择了RealVNC。RealVNC包括了⼀整套的服务器端与客户端,如果只安装客户端是不需要注册码的,其客户端程序名为,这是个绿⾊软件,你可以从安装⽬录下拷贝到其他电脑中运⾏。
⼆、VINO
VINO是Gnome中集成的⼀个VNC软件,安装Gnome环境时默认安装,点击“系统”-“⾸选项”-“远程桌⾯”就打开了其配置窗⼝。
选中“允许其他⼈查看您的桌⾯”后VINO就会启动服务器端进程vino-server,同时它监听TCP 5900端⼝。如果不选中“允许其他⽤户控制您的桌⾯”,客户端则只能观看不能操纵。
VINO的模式与下⾯介绍的XVNC有很⼤不同,我觉得VINO其实是“Windows下的远程协助”,因为客户端显⽰的桌⾯与Linux端本地显⽰器中显⽰的桌⾯⼀样,如果你操纵客户端中的⿏标,Linux的显⽰器也能看到⿏标在跑。如果你在Windows下安装过VNC服务器端,效果就是这个样。
另外,VINO的带宽占⽤真是变态,就算是⼀进桌⾯什么都不打开⽆操作的情况下,带宽也要占到4-5Mbps(桌⾯1280×1024,⾊彩24),如果有操作会占到8-12Mbps。
所以,VINO不适合做为服务器的⽇常远程管理,⽐较适合做为Linux下的远程协助和远程教学,也就是说你遇到⼀个问题,求助⾼⼿,⽽⾼⼿可以⼿把⼿的教你,你可以直接观看屏幕学习,或者做故障重现,你在本地做故障或Bug重现,⽽⼯程师可以远程观看。
三、XVNC
XVNC就是⼤家所熟悉的vnc或vncserver,是由RealVNC公司开发的开源版的VNC软件。
1、安装XVNC。
安装Linux时,可以从安装包中选中。若没有安装,可以从安装盘中到。
服务器的组件名叫 vnc-server。请执⾏ rpm -q vnc-server 这个指令。
它的输出应该是 package vnc-server is not installed 或类似 vnc-server-4.0-11.el4。
假如服务器未被安装,请⽤这个指令来安装它:yum install vnc-server。
2、启动vncserver。
在终端中输⼊:
vncserver :1 -geometry 1280x1024 –depth 24 注::1指1号窗⼝,-geometry指窗⼝分辨率,-depth指⾊彩数
也可以简单的指定:
vncserver :1 注:使⽤RealVNC的客户端,窗⼝分辨率与⾊彩数可以在客户端指定
当你第⼀次启动vncserver时,会要求指定密码,该密码是VNC客户端连接时要输⼊。
窗⼝可以从0开始指定,如果Linux本地端已经启⽤图形环境,则必须从1开始指定,因为窗⼝0被X11占⽤。
3、配置xstartup
XVNC默认采⽤twm做为图形环境,如果你安装了KDE或Gnome也可以启动。
vi ~/.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" &
twm &
最后⼀⾏twm &表⽰启动twm,修改成gnome-session &启动Gnome,修改成startkde &启动KDE。
如果Linux本地端已经启⽤Gnome或KDE图形环境,当VNC客户端连接服务器后,可能会只显⽰灰屏,没有正常启⽤图形环境。查看~/.vnc 下的⽇志时会提⽰错误:You are already running a session manager。
这时需要去掉xstartup⽂件中的
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
这两⾏前的#,再重启vncserver。如果Linux本地端是init 3模式,则不需要修改这两⾏。
当vnc客户端连接服务器时显⽰的界⾯是英⽂的,主要是中⽂环境还没有装⼊,⽽且没有中⽂输⼊法。在# exec /etc/X11/xinit/xinitrc⾏后添加下⾯内容:
export LANG=zh_CN.UTF-8 注:启⽤中⽂环境
scim –d 注:加载scim输⼊法
4、关闭vncserver
vncserver –kill :1 注:关闭窗⼝1,以此类推关闭窗⼝2就为:2
当所有窗⼝都关闭vncserver服务就关闭了。
5、客户端使⽤
XVNC不仅⽀持vncview等客户端程序,还⽀持浏览器控制。
窗⼝0占⽤TCP 5900端⼝(VNC客户端),TCP 5800端⼝(浏览器)。
窗⼝1占⽤TCP 5901端⼝(VNC客户端),TCP 5801端⼝(浏览器)。
窗⼝2、3以此类推。
6、开机⾃启动vncserver
上⾯的操作都是要先登录Linux端,然后⼿动启动vncserver服务后,才能使⽤VNC连接。如果你想开机⾃启动vncserver服务,必须这样做。
先按上⾯的步骤启动⼀次vncserver,确保密码和xstartup⽂件都建⽴了。
然后,vi /etc/sysconfig/vncservers,添加如下内容:
ssh工具windowsVNCSERVERS="1:root 2:zhang 3:li" 注:1、2、3代表窗⼝,⽐如root⽤户⽤窗⼝1,zhang⽤户⽤窗⼝2,这⾥的⽤户是指Linux中的正规的⽤户帐户
VNCSERVERARGS[1]="-geometry 640x480 –depth 24" 注:为root⽤户指定分辨率和⾊彩数,这⾥的[1]指上⾯的“1:root”VNCSERVERARGS[2]="-geometry 640x480 –depth 16" 注:为zhang⽤户指定分辨率和⾊彩数
VNCSERVERARGS[3]="-geometry 800x600"
注:上⾯的这三⾏可以不添加,由vnc客户端⾃⾏控制分辨率和⾊彩。上⾯的root、zhang、li⽤户必须确保密码和xstartup⽂件都建⽴了,你可以分别登录先执⾏⼀次vncserver :1。
最后,执⾏/sbin/chkconfig vncserver on指令。
7、安全
XVNC的数据传输都是明⽂的,因涉及服务器的管理,使⽤明⽂是不可接受的。
我们可以使⽤SSH加密VNC数据。
⾸先,开启Linux端的SSH服务。
第⼆,在Windows端下载⼀个SSH telnet⼯具。推荐的有PuTTy,SecureCRT。
第三,启⽤SSH隧道。下⾯以SecureCRT为例,PuTTy操作类似。
先建⽴⼀个连接到Linux端的普通SSH会话。
在该会话选项中“端⼝转发”中,添加“本地端⼝转发属性”。
见右图中,在“本地”中输⼊⼀个端⼝,这⾥选择了5901,也可以选择5801或其他端⼝,只要不与本地的服务相冲突,这个本地端⼝与Linux 中vncserver监听的窗⼝端⼝⽆关,在“远程”中输⼊5901,这个端⼝是Linux端的vncserver监听的端⼝,这⾥是启动窗⼝1,如果启动窗⼝2则这⾥要输⼊5902。确定。
设置完后,在SecureCRT中启动与Linux的SSH会话,正确登录Linux后。打开vncviewer。
在VNC服务器中输⼊:localhost:5901(这⾥的端⼝就是上⾯指定的本地端⼝,⽽⾮Linux端的端⼝),因为这⾥要连接的是本地的SecureCRT 启动的SSH隧道。在VNC运⾏过程中SecureCRT不能关闭。
这样,在Linux端的防⽕墙就可以只开放SSH端⼝,关闭掉有关VNC的所有端⼝。
8、结论
XVNC是⼀个⾮常好的⽇常⽤服务器管理⼯具,你可以根据你的⽹络带宽调整画质,如果你的带宽偏⼩,可以调⼩分辨率与⾊彩数,XVNC ⽆操作时基本没有数据,如果是800×600分辨率,最差画质,它只会占⼏百Kb甚⾄⼗⼏Kb的带宽,这⼀点上⾮常适合做服务器管理。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论