user-mapping.xml文件在guacamole,Invalid login中无效

时间:2015-11-03 12:22:34

标签: java guacamole

最近,我在http://guac-dev.org/手册中关注了Guacamole的安装说明。我的系统是Ubuntu 14.04。

首先,我安装了基本的必需依赖项:

$ apt-get install -y apache2 libcairo2-dev libjpeg62-dev libpng12-dev libossp-uuid-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libpulse-dev libssl-dev libvorbis-dev maven tomcat7
$ apt-get install -y libvncserver-dev

然后,我下载了guacamole-server-0.9.8.tar.gzguacamole-0.9.8.war,并按照手册中的说明进行了安装:

$ tar xf guacamole-server-0.9.8.tar.gz
$ cd guacamole-server-0.9.8
$ ./configure
$ make
$ make install
$ cp guacamole-0.9.8.war /var/lib/tomcat7/webapps/guacamole.war
$ mkdir /etc/guacamole

我创建了/etc/guacamole/guacamole.properties,其中包含以下内容:

guacd-hostname: localhost # although the guide says it should be guacd-host, but the example shown in http://guac-dev.org/doc/gug/configuring-guacamole.html is guacd-hostname
guacd-port: 4822
user-mapping: /etc/guacamole/user-mapping.xml

/etc/guacamole/user-mapping.xml包含以下内容:

<user-mapping>
    <authorize username="USERNAME" password="PASSWORD">
        <protocol>vnc</protocol>
        <param name="hostname">localhost</param>
        <param name="port">5901</param>
        <param name="password">123456</param>
    </authorize>
    <authorize username="wangx" password="wangxiang">
        <protocol>vnc</protocol>
        <param name="hostname">192.168.1.111</param>
        <param name="port">5901</param>
        <param name="password">123456</param>
    </authorize>
</user-mapping>

然后我重新启动了tomcat7和guacd:

$ /etc/init.d/tomcat7 restart
$ /etc/init.d/guacd restart

GUACAMOLE_HOME环境变量为空:

$ echo $GUACAMOLE_HOME

.guacamole/home/<user>中没有/var/lib/tomcat7/webapps/guacamole目录。当我访问http://localhost:8080/guacamole时,我输入了用户名&#34; wangx&#34;和密码&#34; wangxiang&#34;,显示无效登录。

我该如何解决这个问题?我应该在哪里找到guacamole.propertiesuser-mapping.xml文件?我做错了吗?

感谢您的关注。

1 个答案:

答案 0 :(得分:8)

  

根据手册中的说明:

...
$ mkdir /etc/guacamole

Guacamole不会自动从/etc/guacamole读取。它将从GUACAMOLE_HOME读取,但这不是环境变量 - 它是Guacamole配置目录的占位符,可以通过环境变量确定同名,但还有其他可能的位置。来自GUACAMOLE_HOME description in the Guacamole manual

  

GUACAMOLE_HOME

     

Guacamole默认从其自己的配置目录中读取文件,仅在找不到此目录时才使用类路径。找到此目录时,Guacamole将按顺序尝试:

     
      
  1. 系统属性guacamole.home中指定的目录。
  2.   
  3. 环境变量GUACAMOLE_HOME中指定的目录。
  4.   
  5. 目录.guacamole,位于运行servlet容器的用户的主目录中。
  6.         

    该目录在文档的其他地方将被称为GUACAMOLE_HOME

         

    Guacamole使用GUACAMOLE_HOME作为guacamole.properties等配置文件的主要搜索位置。 ...

您的guacamole.propertiesuser-mapping.xml看起来不错,但Guacamole无法找到这些文件,除非它们在GUACAMOLE_HOME范围内。解决此问题的一种非常简单的方法是将Tomcat用户主目录中的.guacamole符号链接到/etc/guacamole。对于Ubuntu上的“tomcat7”包,Tomcat用户的主目录是/usr/share/tomcat7

$ ln -s /etc/guacamole/ /usr/share/tomcat7/.guacamole

或者,您可以创建.guacamole目录,并创建指向guacamole.properties的符号链接。由于您user-mapping.xml中明确指定了guacamole.properties的位置,因此您无需将其放在GUACAMOLE_HOME中:

$ mkdir /usr/share/tomcat7/.guacamole
$ ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat7/.guacamole/

确保在进行这些更改后重新启动Tomcat,事情就应该开始了。