VNC客户端-MultiVNC
2010-10-30 15:26:30 阿炯

本站赞助商链接,请多关照。 MultiVNC 是一个安全的跨平台开源 VNC 查看器,旨在易于使用和快速,基于libvnclient的跨平台多播VNC查看器。主要功能包括支持大部分编码、零配置服务自动发现、无缝的边界控制模式,体验性的支持多播的 VNC。桌面版使用wxWidgets,可以在Unix、Mac OS X和Windows上运行;另外还有一个Android版本。采用C++编写开发并在GPLv3协议下授权。

MultiVNC - Secure VNC Viewer.

它包括以下功能:
* 支持大多数 VNC 编码,包括 Tight。
* 通过 AnonTLS 或 VeNCrypt 的加密 VNC 连接。
* 支持使用基于密码和私钥的身份验证的 SSH 隧道。
* UltraVNC 中继器支持。
* 发现 VNC 服务器通过 ZeroConf

特性
支持大多数VNC编码,包括Tight。
TLS支持,即AnonTLS和VeNCrypt。
支持基于密码和私钥的身份验证的ssh隧道。
UltraVNC中继器支持。
发现通过ZeroConf发布自己的VNC服务器。
连接的书签及导入和导出保存的连接。
虚拟鼠标按钮控制与触觉反馈。
两指滑动手势识别。
一个超级快速的触摸板模式,供本地使用。
硬件加速的OpenGL绘图和缩放。
支持服务器帧缓冲区调整大小。


在Linux系统中可以使用以下步骤来操作VNC(Virtual Network Computing)服务:

1.安装VNC服务器:首先在Linux系统上安装VNC服务器软件。常见的VNC服务器软件包括TightVNCRealVNCTigerVNCUltraVNC。根据系统版本和喜好选择一个合适的软件包,并使用适当的包管理工具进行安装。

2.配置VNC服务器:安装完VNC服务器软件后,需要进行一些配置。主要是指定要监听的端口和设置VNC连接的密码。配置文件通常位于/etc/vnc/或/etc/sysconfig/目录下。具体的配置方法可以参考VNC服务器软件的官方文档。

3.启动VNC服务器:配置完成后,可以使用以下命令启动VNC服务器:vncserver

该命令会启动VNC服务器,并为每个VNC连接分配一个会话号。会话号通常以`:X`的形式表示,其中X是一个整数,表示第X个会话。

4.设置VNC连接密码:第一次启动VNC服务器时,需要设置VNC连接的密码。可以使用以下命令进行设置:vncpasswd

执行该命令后,系统会提示输入新的VNC连接密码,并确认密码。密码会被保存在用户的主目录下的'.vnc/passwd'文件中。

5.连接VNC服务器:VNC服务器启动后,可以使用任何支持VNC协议的VNC客户端工具连接到服务器。在客户端工具中,需要指定连接的IP地址和端口号。端口号通常是默认的5900加上会话号。例如,如果会话号是1,则端口号为5901。连接成功后,会要求输入之前设置的VNC连接密码。

以上是在Linux系统上启动VNC的基本步骤和命令。具体的操作可能会有所差异,取决于使用的VNC服务器软件和系统版本。在使用时,建议参考相应的文档和指南。

在Linux系统上启动VNC服务的最简步骤,可以使用以下命令:

1. 安装VNC Server:
apt-get update
apt-get install vnc4server | tightvncserver

2. 设置VNC密码:
vncpasswd

3. 启动VNC Server:
vncserver :1 (冒号后面的数字是显示器号码,可以根据需要进行更改)

4. 配置VNC Server:
vncserver -geometry 1920×1080 (指定VNC会话的分辨率,可以根据需要进行更改)

5. 查看VNC Server进程:
ps -ef | grep -i vnc

6. 停止VNC Server:
vncserver -kill :1 (冒号后面的数字是显示器号码,要与启动时一致)

通过以上命令可在Linux系统上启动VNC服务,并设置相应的密码和配置。之后,可以通过VNC客户端连接到Linux系统并远程控制。


TightVNC

创建并设置VNC服务器的配置文件:在用户的家目录下创建一个名为'.vnc'的目录,并进入该目录:
cd ~/.vnc

使用以下命令创建VNC服务器配置文件:
touch xstartup

给该文件设置可执行权限:
chmod +x xstartup

编辑配置文件,并添加以下内容:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xfce4-session &

注意:上述配置文件适用于安装了XFCE桌面环境的情况。如果你使用其他桌面环境,请相应地修改配置文件以适应你的环境。

启动VNC服务器:使用'vncserver'命令来启动VNC服务器,并设置VNC连接的密码。例如,运行以下命令启动VNC服务器,并设置密码为"password":vncserver -geometry 1920×1080 -depth 24

"geometry"参数用于设置VNC窗口的分辨率和深度。

远程连接到VNC服务器:在客户端计算机上,使用VNC客户端软件(如RealVNC、TightVNC等)连接到VNC服务器的IP地址和端口号。默认情况下,VNC服务器的端口号为5901,因此连接地址为"IP地址:5901"。

输入VNC连接密码:在VNC客户端软件中输入VNC连接密码(在第3步中设置的密码)并登录。

VNC远程访问和控制:连接成功后,便可以远程访问和控制Linux计算机,就像使用本地计算机一样。

如有需要,可以通过以下命令停止VNC服务器:vncserver -kill :1

其中':1'表示VNC服务器的显示号码,根据需要进行修改。

注意,具体步骤可能会根据Linux发行版和VNC服务器软件的不同而略有差异。

Linux的远程桌面目前有两种比较流行的方式:XDM(X display manager)方案和VNC方案,个人比较倾向于VNC方案,一是因为VNC方案配置起来相对比较容易,二是VNC方案支持多种连接方式,比如通过浏览器访问Linux桌面,免去需要安装客户端的麻烦。

注意:每个用户都可以启动自己的VNCSERVER远程桌面,同时每个用户可以启动多个VNCSERVER远程桌面,它们用ip加端口 号:ip:1、ip:2、ip:3 来标识、区分,使用同一端口会使另外登录的用户自动退出。另,VNCSERVER的大部分配置文件及日志文件都在用户home目录下.vnc目录下。

用户可以自定义启动号码如:

[freeoa@localhost /]$ vncserver :2 #注意':2'前面一定要有空格。
A VNC server is already running as :2

如果使用的是gnome桌面,那么需要修改/root/.vnc/xstartup的配置文件。

# vim 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 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &
gnome-session gnome #添加这一句是连接时使用gnome 桌面环境
twm &

设置修改完毕最好是重启一次系统,否则设置可能不会生效。可采用的方法是杀死vncserver进程再重运行vncserver。

# vncserver -kill :1 #这里你启动vncserver时是什么端口号要对应上。
# vncserver :1 #重启VNCSERVER,注意:1前面一定要有空格。

设置用户信息及分辨率。

# vi /etc/sysconfig/vncservers
# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the lines below to start a VNC server on display :2
# as my 'myusername' (adjust this to your own). You will also
# need to set a VNC password; run 'man vncpasswd' to see how
# to do that.

# DO NOT RUN THIS SERVICE if your local area network is
# untrusted! For a secure way of using VNC, see
# <URL:http://www.uk.research.att.com/archive/vnc/sshvnc.html >.
# Use “-nolisten tcp” to prevent X connections to your VNC server via TCP.
# Use “-nohttpd” to prevent web-based VNC clients connecting.
# Use “-localhost” to prevent remote VNC clients connecting except when
# doing so through a secure tunnel. See the “-via” option in the
# `man vncviewer’ manual page.

VNCSERVERS="1:root 2:freeoa" #此处添加用户,一般只添加一个1:root也就行了。
VNCSERVERARGS[1]=”-geometry 800×600 -nolisten tcp -nohttpd -localhost”
VNCSERVERARGS[2]=”-geometry 1024×768 -nolisten tcp -nohttpd -localhost”

#注意:上面是分别设置的root和freeoa两个用户的分辨率,注意是用端口号区分的。

另外也可以通过命令行临时修改分辨率及色深,这种方式重启后就会丢失,这里暂时用不到,命令如下:
# vncserver -geometry 800×600 #设置vncserver的分辨率
# vncserver -depth 16 #设置vncserver的色深

到这里VNCSERVER服务器端就基本配置完成了,接下来说说客户端连接及使用。

1.访问方式
a、在linux下,运行vncviewer命令即可,服务器地址的写法形如192.168.1.11:1
b、在windows下,运行windows版本的vncviewer即可,用法与linux下相近。
c、用浏览器(平台无关),作为java applet来实现,以形如http://192.168.1.11:5801 的方式来启动 (vnc 端口从5800 开始依次类推,一般会是5800,5900)

2.修改密码
运行vncpasswd即可

3.停止vncserver
# vncserver -kill :1
# vncserver -kill :2

注意到vncserver只能由启动它的用户来关闭,即时是root也不能关闭其它用户开启的vncserver,只能用kill命令暴力杀死进程。

4.稳定性设置
vncserver默认在多个客户机连接同一个vncserver的显示端口时,该服务端口断开旧连接而为新连接服务,可通过-dontdisconnect拒绝新连接请求而保持旧的连接。

5.同一个显示器可以连接多个客户机

6.Why my vncserver just only listen on 127.0.0.1

缺省情况下,TigerVNC只监听环回网络接口。这对安全性很有好处,因此只有同一台计算机上的才能连接。

从vncserver命令行帮助中可看到此项说明:
[-localhost yes|no]    Only accept VNC connections from localhost

当然,如果想远程连接,需要具体指定如下:

方式1.从命令行启动服务器时,在命令行中添加-localhost no
vncserver ... -localhost no
tigervncserver -localhost no :1

':1' #这里的1代表5901端口,如果是2代表5902端口,以此类推。注意其与命令之间有空格。

方式2.配置TigerVNC永久监听/etc/vnc.conf中的所有网络接口。添加以下内容,注意配置文件给人的印象是no是默认值。它们不遵循这样的约定,即如果配置文件中注释掉了一个配置,那么它应该具有默认值(而不是通常会更改的其他值)。
$localhost = "no";

对于TigerVNC,正如前面提到的,尝试哪些使用:vncserver <your options> -interface <ip-address>

另外-localhost选项也可能是原因。

Xvnc -help:
interface - listen on the specified network address (default=all)
localhost - Only allow connections from localhost (default=0)

vncserver -help:
[-localhost [yes|no]]    if enabled, VNC will only accept connections from localhost.

vncserver -kill :1 #关闭vnc对应的5901端口

# 这里要注意:每个用户都可以启动自己的VNCSERVER远程桌面,同时每个用户可以启动多个VNCSERVER远程桌面,它们用ip加端口 号:ip:1、ip:2、ip:3 来标识、区分,使用同一端口会使另外登录的用户自动退出。VNCSERVER的大部分配置文件及日志文件都在用户home目录下.vnc目录下。用户可以自定义启动编号。

# vncserver -alwaysshared

让系统启动时自动启动VNCSERVER。下为在debian-v11上的vnc服务启动过程记录:

hto@freeoa:~$ /usr/bin/vncserver :1 -localhost no -verbose
Starting /usr/bin/Xtigervnc :1 -rfbport 5901 -localhost=0 -SecurityTypes VncAuth,TLSVnc -PasswordFile /home/hto/.vnc/passwd -ClientWaitTimeMillis 30000 -geometry 1920x1200 -desktop freeoa:1 (hto) -depth 24 -auth /home/hto/.Xauthority

New Xtigervnc server 'freeoa:1 (hto)' on port 5901 for display :1.
Use xtigervncviewer -SecurityTypes VncAuth,TLSVnc -passwd /home/hto/.vnc/passwd freeoa:1 to connect to the VNC server.

Starting session via '/etc/X11/Xtigervnc-session'
Log file is /home/hto/.vnc/freeoa:5901.log


最新版本:0.4
增加对 IPv6 服务器的支持;改进 MulticastVNC 模式使用 NACK 机制使得多播更加可靠;支持 QoS;修复了一些bug。

最新版本:2.1
v2.1.8于2024年10月中旬发布。

项目主页:https://github.com/bk138/multivnc