Lnmpy

Elvis's Blog

Ubuntu上搭建Guacamole

Leader提出让我自己去了解一下Guacamole这个开源项目,自己一看,以前也没有接触过VNC之类的东西,个人对于这种开源的项目并没有太大感觉。 不过就像当初没有用过ssh之前,我一样觉得这个应该可以很快的上手。OK,进入正题,首先就是环境的搭建了。

Guacamole的原理

引用官方的原理图(或者说叫流程图)。

Guacamole结构图

VNC之类的原理咱就先跳过不管了,这里面先简单说下各个模块:

Web Browser:普通的用户,使用的HTML5与后台进行交互。

Guacamole:处理与用户的交互,将页面上的操作请求处理下,再直接与下层的guacd来交互。

guacd:封装了各种RDP协议的中间层,如VNC等。

从图中可以看到,这个架构使得底层的guacd基本不需要进行什么修改和扩展了,直接部署上去就完事了,管你前端Web页面要改得怎样花里花俏的。

为啥这样,guacd使用C++实现的,底层处理封装各种不同的RDP,性能肯定高些,而用Java来生成前端则是方便吧,用PHP、Python等也可以,反正Guacamoleguacd的交互是采用独家的guacamole协议。这种设计思想和X-11是多么的神似。

Guacamole的部署(此处我以Ubuntu-12.04为例)

VNCServer的安装启动

ubuntu上安装VNC server很简单:

sudo apt-get install vnc4server

安装完后要给当前用户设置密码,这个密码就是连接VNC时要用到的:
接着输入:

vncserver :1  # :1 表示显示号,启启用的端口为5901

:1代表display-number,这里我用Chrome的插件VNC Viewer来测试的。连上去当然只有一个ssh客户端了,配置下也可以连各种X-window,这个不是我们的重点。

注意vncserver默认的端口是5900,如果采用VNC客户端的话,直接使用display-number即可,涉及到具体端口的,则使用端口display-number+5900,从0开始。

Guacamole-Web的部署

接下来安装Java-Web端的环境,直接输入,就会自动把依赖的环境也配置好。

sudo apt-get install guacamole-tomcat
//会提示重启tomcat,确认即可

其就是安装好java,tomcat之后,发布guacamole的war包。同时在/etc/guacamole中可以看到两个配置文件:guacamole.propertiesuser-mapping.xml

guacamole.properties的配置如下:

// guacd服务绑定的ip和port,必须和guacd中配置相同
guacd-hostname: localhost
guacd-port:     4822

//这个不用管
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
basic-user-mapping: /etc/guacamole/user-mapping.xml

user-mapping.xml的配置如下:

<user-mapping>
    <authorize username="USERNAME" password="PASSWORD"> //在浏览器中的登录账号密码
        <protocol>vnc</protocol> //rdp类型
        <param name="hostname">localhost</param> //VNC的ip,可以是任意的ip和hostname,此处以本机为例
        <param name="port">5901</param> //这个和你的VNC端口类似,注意其对应于 :1
        <param name="password">password</param>
    </authorize>
</user-mapping>

这两个配置文件修改后,Guacamole会动态重新加载,只要你别改错了就行。

guacd的配置和部署

sudo apt-get install guacd
//其实直接sudo apt-get install guacamole可以同时安装好guacd和guacamole-tomcat。

注意默认的例子是连接localhost下的4822端口,需要的话自己再修改下源码即可。在guacd/daemon.c中可以看到代码中对ip-port的绑定。

char* listen_address = NULL; /* Default address of INADDR_ANY */
char* listen_port = "4822";  /* Default port */

Guacamole初体验

好了,直接在浏览器中打开http://localhost:8080/guacamole/就可以看到:

Guacamelo登录界面

登录呢,一个简单的Web Terminal:

Guacamelo登录效果图

这只是一个简单的安装流程吧,后续的集成再来总结吧

Proudly powered by Hexo and Theme by Hacker
© 2023 Elvis Macak