http://guacamole.incubator.apache.org/doc/gug/configuring-guacamole.html#guacamole-home
文章里只说重点,Apache Guacamole是一个开源的HTML5项目用于实现无客户端的远程管理。它可以可以很容易的编译运行在LINUX系统上,包括树莓派。
源码从这里获取:http://guacamole.incubator.apache.org/releases/
如果想二次开发或学习,从这里获取可能更好:https://github.com/search?utf8=%E2%9C%93&q=repo%3Aapache%2Fincubator-guacamole-server+repo%3Aapache%2Fincubator-guacamole-client+repo%3Aapache%2Fincubator-guacamole-website&type=Repositories&ref=searchresults
项目分为三个部分:
server web client
server部分编译参考这里:http://guacamole.incubator.apache.org/doc/gug/installing-guacamole.html
核心技术技巧就是把文章里提到的包都安装一遍,如果你的Debian/Ubuntu系列的电脑
可以执行这个:
sudo apt-get install libcairo2-dev libjpeg62-turbo-dev libpng12-dev \ libossp-uuid-dev libavcodec-dev libavutil-dev libswscale-dev \ libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev \ libvncserver-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev |
如果是CentOS系列的自己去文章里提取吧。
我是用源码包编译的,所以可以直接 configure。如果你使用git clone获得的基础源码,你可能还需要使用autotool,具体怎么用?自己去上面那个URL里看吧。
解包过程就不说了。
./configure --with-init-dir=/etc/init.d |
执行上述命令可以在安装包直接运行如果不想自动运行,可以不加任何参数。
一般来说只要库装全了编译都是OK的。这个项目可以支持RDP,SSH,Telnet,VNC,前面两个很重要,Telnet的话用处确实不大。
make make install |
下面是重点了:
guacamole 的服务名叫guacd它的配置信息需靠环境变量GUACAMOLE_HOME来指定配置文件路径
一般配置文件放在这里:/etc/guacamole下
这个目录不会自动创建所以你要自己创建:
mkdir /etc/guacamole
并且需要在/etc/profile里定义GUACAMOLE_HOME变量指向路径。
在profile的末尾加上
GUACAMOLE_HOME=/etc/guacamole export GUACAMOLE_HOME |
并执行:来
source /etc/profile |
更新环境变量
在/etc/guacamole/guacamole.properties中写如下内容:
guacd-hostname: localhost guacd-port: 4822 user-mapping: /etc/guacamole/user-mapping.xml auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider basic-user-mapping: /etc/guacamole/user-mapping.xml |
在/etc/guacamole/user-mapping.xml中写如下内容:
<user-mapping> <authorize username="user" password="user"> <connection name="vnc"> <protocol>vnc</protocol> <param name="hostname">192.168.2.206</param> <param name="port">5901</param> <param name="username">root</param> <param name="password">123456</param> </connection> <connection name="rdp"> <protocol>rdp</protocol> <param name="hostname">192.168.0.47</param> <param name="port">3389</param> <param name="username">user</param> <param name="password">aaaaaa</param> </connection> <connection name="ssh"> <protocol>ssh</protocol> <param name="hostname">192.168.0.109</param> <param name="port">22</param> <param name="username">user</param> <param name="password">ggggggggggg</param> </connection> </authorize> </user-mapping> |
这些内容你看完就知道该怎么改了。
service guacd start |
执行上面这句或是参考官网的方法启动服务。
root@host:~# lsof -i:4822|grep LISTEN guacd 11730 root 4u IPv4 222536 0t0 TCP localhost:4822 (LISTEN) |
看到这个输出你就算完成一半了。
这个项目需要一个WEB容器来承载服务,我直接安装的tomcat,我的计划是用nginx做前端。
所以我是这样做的:
apt-get install tomcat8 |
guacamole.war是web承载服务,这个就不编译了,直接从官网下载然后放到:
/var/lib/tomcat8/webapps/guacamole.war |
如果你的环境和我一样的话,那就是这里了。
你还需要在这里创建一个目录:
/usr/share/tomcat8/ mkdir .guacamole |
把/etc/guacamole/guacamole.properties连接到/usr/share/tomcat8/.guacamole/guacamole.properties以便于让tomcat容器与guacd共享配置。
ln -n /etc/guacamole/guacamole.properties /usr/share/tomcat8/.guacamole/guacamole.properties service tomcat8 restart |
如果你把/etc/guacamole/user-mapping.xml改成正确的内容。那你就算是大功造成了。可以测试了。
http://192.168.0.108:8080/guacamole/
user-mapping.xml中的内容格式请参考:http://guacamole.incubator.apache.org/doc/gug/configuring-guacamole.html
一般来说,guacamole绑定127.0.0.1,4822端口也不需要加密。
tomcat 的绑定地址也需要改成127.0.0.1以确保安装。
前端使用nginx然后反向代理,加个证书就OK了。
经过测试发现,nginx反向代理无法支持WEB需要的高级特性。只能在tomcat或是其它兼容的容器上设置HTTPS以确保安全了。
server.xml
配置参考如下:
<Connector port="443" address="127.0.0.1" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TSL" keystoreFile="/etc/tomcat8/pem/tomcat.keystore" keystorePass="ssssssssssssss" connectionTimeout="20000" URIEncoding="UTF-8" />
keytool用于生成自签名证书,可以参考这里。