同远程桌面一样,vnc也是经常用到的一个管理工具。尽管vnc本身有很多缺点,但由于其跨平台,小巧,开源等特性,所以其目前仍是在windows和linux之间远程控制上非常流行的一个工具。之前都是都在windows下连接linux或windows ,但现在由于将desktop桌面环境换成了linux了,所以就有了在linux通过vnc连接linux或都windows机器的需求 。在linux上实现更加简单,具体如下 。

同rdesktop一样,在linux下我使用vncviewer命令行工具连接 (在linux下虽然有图形化的工具,但是个人感觉使用终端命令操作更为方便 )。这里以linux mint为例 。

一、安装vncviewer及使用

 1yang@yang-MS-7636 ~ $ sudo apt-get install vncviewer
 2[sudo] password for yang:
 3正在读取软件包列表... 完成
 4正在分析软件包的依赖关系树
 5正在读取状态信息... 完成
 6注意,选取 xtightvncviewer 而非 vncviewer
 7建议安装的软件包:
 8  tightvncserver ssh
 9下列【新】软件包将被安装:
10  xtightvncviewer
11……………………………………………………省略

安装完成后,可以通过–help查看该命令的用法:

 1yang@yang-MS-7636 ~ $ vncviewer --help
 2TightVNC Viewer version 1.3.9
 3Usage: vncviewer [<options>] [<host>][:<display>]
 4       vncviewer [<options>] [<host>][::<port>]
 5       vncviewer [<options>] -listen [<display>]
 6       vncviewer -help
 7<options> are standard Xt options, or:
 8        -via <gateway>
 9        -shared (set by default)
10        -noshared
11        -viewonly
12        -fullscreen
13        -noraiseonbeep
14        -passwd <passwd-filename> (standard VNC authentication)
15        -encodings <encoding-list> (e.g. "tight copyrect")
16        -bgr233
17        -owncmap
18        -truecolour
19        -depth <depth>
20        -compresslevel <compress-value> (0..9: 0-fast, 9-best)
21        -quality <jpeg-quality-value> (0..9: 0-low, 9-high)
22        -nojpeg
23        -nocursorshape
24        -x11cursor
25        -autopass

先根据帮助连接一台机器进行测试:

1vncviewer  192.168.30.88::5915

以上在未使用OPTIONS参数时进行的连接,连接后,会要求输入密码,登陆完成后才能进行下一步的操作 。我这人最懒,即然有-passwd参数当然要用上,最好把这个命令脚本化,执行一下脚本就可以连接到相应的server 上 。

由于vncviewer后面的-passwd不支持明文密码。使用明文密码时会报错,具体如下:

1yang@yang-MS-7636 ~/autologin $vncviewer -passwd kaoqin 192.168.30.88::5915
2Connected to RFB server, using protocol version 3.8
3Performing standard VNC authentication
4Authentication failed

这就要另外一个工具vncpasswd工具生成vnc能识别的密码文件 。

二、vncpasswd的安装及自动登陆

vncpasswd并不是一个单独的一个包,其是包含在vncserver包中的,具体安装如下:

 1yang@yang-MS-7636 ~/autologin $ sudo apt-get install vncpasswd
 2正在读取软件包列表... 完成
 3正在分析软件包的依赖关系树
 4正在读取状态信息... 完成
 5E: 未发现软件包 vncpasswd
 6yang@yang-MS-7636 ~/autologin $ sudo apt-get install tightvncserver
 7正在读取软件包列表... 完成
 8正在分析软件包的依赖关系树
 9正在读取状态信息... 完成
10建议安装的软件包:
11  tightvnc-java
12下列【新】软件包将被安装:
13  tightvncserver
14升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 84 个软件包未被升级。
15……………………………………………………省略

上面我直接安装时会报错,提示不存在该包,安装完tightvncserver后就有vncpasswd命令了。接下来就可以通过vncpasswd生成密码文件 ,并通过脚本自动登陆了:

 1yang@yang-MS-7636 ~/autologin $ vncpasswd ~/autologin/kaoqin
 2Password:
 3Verify:
 4Would you like to enter a view-only password (y/n)? n
 5yang@yang-MS-7636 ~/autologin $ cat vncviewer.sh
 6#!/bin/bash
 7vncviewer -passwd kaoqin 192.168.30.88::5915
 8yang@yang-MS-7636 ~/autologin $ sh vncviewer.sh
 9Connected to RFB server, using protocol version 3.8
10Performing standard VNC authentication
11Authentication successful
12Desktop name "QEMU (winxp_kaoqin)"
13VNC server default format:
14  32 bits per pixel.
15  Least significant byte first in each pixel.
16  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
17Warning: Cannot convert string "-*-helvetica-bold-r-*-*-16-*-*-*-*-*-*-*" to type FontStruct
18Using default colormap which is TrueColor.  Pixel format:
19  32 bits per pixel.
20  Least significant byte first in each pixel.
21  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
22…………………………………………省略

注:

  1. 如果有多个server需要通过vnc进行连接,可以将脚本略作修改,通过定义函数、设置变量、参数、通过switch……case语句(或if语句)实现自动登陆。
  2. 如果想使用图形化的连接工具,可以使用Remote Desktop Viewer之类的工具进行连接 。