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

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

一、安装vncviewer及使用

yang@yang-MS-7636 ~ $ sudo apt-get install vncviewer

[sudo] password for yang:

正在读取软件包列表... 完成

正在分析软件包的依赖关系树

正在读取状态信息... 完成

注意,选取 xtightvncviewer 而非 vncviewer

建议安装的软件包:

tightvncserver ssh

下列【新】软件包将被安装:

xtightvncviewer

……………………………………………………省略

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

yang@yang-MS-7636 ~ $ vncviewer --help

TightVNC Viewer version 1.3.9

Usage: vncviewer [] [][:]

vncviewer [] [][::]

vncviewer [] -listen []

vncviewer -help

are standard Xt options, or:

-via

-shared (set by default)

-noshared

-viewonly

-fullscreen

-noraiseonbeep

-passwd (standard VNC authentication)

-encodings (e.g. "tight copyrect")

-bgr233

-owncmap

-truecolour

-depth

-compresslevel (0..9: 0-fast, 9-best)

-quality (0..9: 0-low, 9-high)

-nojpeg

-nocursorshape

-x11cursor

-autopass

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

vncviewer 192.168.30.88::5915

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

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

yang@yang-MS-7636 ~/autologin $vncviewer -passwd kaoqin 192.168.30.88::5915

Connected to RFB server, using protocol version 3.8

Performing standard VNC authentication

Authentication failed

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

二、vncpasswd的安装及自动登陆

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

yang@yang-MS-7636 ~/autologin $ sudo apt-get install vncpasswd

正在读取软件包列表... 完成

正在分析软件包的依赖关系树

正在读取状态信息... 完成

E: 未发现软件包 vncpasswd

yang@yang-MS-7636 ~/autologin $ sudo apt-get install tightvncserver

正在读取软件包列表... 完成

正在分析软件包的依赖关系树

正在读取状态信息... 完成

建议安装的软件包:

tightvnc-java

下列【新】软件包将被安装:

tightvncserver

升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 84 个软件包未被升级。

……………………………………………………省略

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

Password:

Verify:

Would you like to enter a view-only password (y/n)? n

yang@yang-MS-7636 ~/autologin $ cat vncviewer.sh

#!/bin/bash

vncviewer -passwd kaoqin 192.168.30.88::5915

yang@yang-MS-7636 ~/autologin $ sh vncviewer.sh

Connected to RFB server, using protocol version 3.8

Performing standard VNC authentication

Authentication successful

Desktop name "QEMU (winxp_kaoqin)"

VNC server default format:

32 bits per pixel.

Least significant byte first in each pixel.

True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0

Warning: Cannot convert string "-*-helvetica-bold-r-*-*-16-*-*-*-*-*-*-*" to type FontStruct

Using default colormap which is TrueColor. Pixel format:

32 bits per pixel.

Least significant byte first in each pixel.

True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0

…………………………………………省略

注:

1、如果有多个server需要通过vnc进行连接,可以将脚本略作修改,通过定义函数、设置变量、参数、通过switch……case语句(或if语句)实现自动登陆。

2、如果想使用图形化的连接工具,可以使用Remote Desktop Viewer之类的工具进行连接 。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐