【Guacamole中⽂⽂档】⼆、⽤户指南——5.配置Guacamole
配置Guacamole
Guacamole安装后,需要配置⽤户和连接,才能正常⼯作。本章介绍Guacamole的⼀般配置及其默认⾝份验证⽅法的使⽤。Guacamole的默认⾝份验证⽅法从⼀个名为l的单⼀⽂件读取⽤户和连接。此⾝份验证⽅法旨在:
1. 极⼩化部署Guacamole。
2. 以⼀种相对简单的⽅法来验证Guacamole是否被正确装配。
其他更复杂的⾝份验证⽅法(如使⽤后端数据库、LDAP等)将在单独的专门地章节中讨论。
⽆论使⽤何种⾝份验证⽅法,Guacamole的配置始终由两个主要部分组成:⼀个称为GUACAMOLE_HOME的⽬录,它是配置⽂件的主要搜索位置,以及Guacamole及其扩展名使⽤的主配置⽂件,guacamole.properites。
GUACAMOLE_HOME(/etc/guacamole)
GUACAMOLE_HOME是Guacamole配置⽬录的名称,默认情况下,位于/etc/guacamole。所有的配置⽂件,扩展等都位于整个⽬录
下。GUACAMOLE_HOME的结构经过严格定义,由以下可选⽂件组成:
guacamole.properties
是主要的Guacamole配置⽂件。此⽂件中的属性指⽰Guacamole如何连接到guacd,且可以配置已安装的⾝份验证扩展的⾏为。
Guacamole使⽤名为Logback的⽇志系统来记录所有消息。默认情况下,Guacamole仅将⽇志输出到控制台,但可以通过提供⾃⼰的Logback配置⽂件来更改该⾏为。
extensions/
所有Guacamole扩展的安装位置。Guacamole将在启动时⾃动加载该⽬录下的所有.jar⽂件。
lib/
任意Guacamole扩展所需库的搜索⽬录。Guacamole将使该⽬录下的.jar⽂件对所有扩展可⽤。如果你的扩展需要额外的库,⽐如数据库驱动,那么这是放置他们的恰当位置。
重载GUACAMOLE_HOME
如果你不能或不想使⽤/etc/guacamole作为GUACAMOLE_HOME,该位置可以通过以下任意⽅法进⾏重载:
1. 在运⾏servlet容器的⽤户的家⽬录创建⼀个名为.guacamole的⽬录。如果该⽬录存在,则将⾃动被⽤作GUACAMOLE_HOME。
2. 使⽤环境变量GUACAMOLE_HOME指定替代⽬录的完整路径。请务必参考你的servlet容器的⽂档,以确定如何正确设置环境变量。
3. 通过系统属性guacamole.home指定替代⽬录的完整路径。
guacamole.properties
guacamole.properties使Guacamole web应⽤使⽤的⼀个主要配置⽂件。该⽂件是Guacamole或任意Guacamole扩展(包括⾝份提供程序)读取所有配置属性的通⽤位置。
在之前的版本中,该⽂件必须位于你的servlet容器的classpath中。现在,guacamole.properties的位置可以⽤环境变量或系统属性显式定义,classpath只能作为最后⼿段使⽤。搜索guacamole.properties时,Guacamole将按如下顺序查看:
1. 先在上述定义的GUACAMOLE_HOEM中查看。
mysql下载jar包2. 如果没有,再在servlet容器的classpath下查看。
guacamole.properties⽂件是可选的,⽤于在默认值不充分的情况下配置Guacamole,或为扩展提供附加配置信息。有⼏个标准属性是始终可⽤的:
api-session-timeout
允许Guacamole会话(⾝份验证令牌)在不活动的情况下保持有效的时间量,以分钟为单位。如果省略,Guacamole不活动的会话将在60分钟后过期。
api-max-request-size
在任何特定HTTP请求的实体主体中要接受的最⼤字节数,其中0表⽰没有任何限制。如果省略,默认情况下,请求将被限制为2097152字节(2MB)。此限制不适⽤于⽂件上传。
如果使⽤⼀个反向代理代理SSL终端,谨记,反向代理可能会独⽴于此实施⾃⼰的限制。例如,
allowed-languages
以逗号分隔的语⾔关键字⽩名单,允许在Guacamole界⾯中显⽰的语⾔选项。例如,要将Guacamole仅限于英语和德语,可以指定:allowed-languages: en, de
由于英语是备⽤语⾔,在所选语⾔中缺少翻译键时使⽤,因此只有在绝对肯定没有字符串丢失的情况下,才应从该列表中删除英语。
此处未列出的任何内置语⾔的相应JSON仍将通过HTTP提供,但Guacamole界⾯不会使⽤它们,也不会基于本地浏览器语⾔⾃动使⽤它们。如果省略,所有定义的语⾔都将可⽤。
enable-environment-properties
如果设置为true,则在使⽤guacamole.properties中指定的值或返回默认值之前,Guacamole将⾸先评估其环境变量,以获取任意给定配置属性的值。通过启⽤此选项,可以使⽤环境变量轻松覆盖任何其他配置属性。
enable-environment-properties:true
在环境变量中搜索配置属性时,⾸先转换属性的名称,⽅法是将所有⼩写字符转换为等效的⼤写字符,并将所有连字符(-)替换为下划线字符(_)。例如,在搜索环境变量时,guacd-hostname属性将被转换为GUACD_HOSTNAME。
extension-priority
应按特定顺序加载的所有扩展的名称空间的逗号分隔列表。可以使⽤特殊值*代替名称空间来表⽰未列出的所有扩展。所有显式列出的扩展名将按给定的顺序排序,⽽所有未显式列出的扩展名将按其⽂件名排序。
例如,为了确保⾸先加载对SAML的⽀持:
extension-priority: saml
或者确保最后加载对SAML的⽀持:
extension-priority: *, saml
如果不确定应⽤的名称空间或加载扩展的顺序,请查看Guacamole⽇志。所有已安装扩展的名称空间和加载顺序都被Guacamole在启动期间记录下来:
...
23:32:06.467 [main] INFO nsion.ExtensionModule - Multiple extensions are installed and will be loaded in order of decreasing priority: 23:32:06.468 [main] INFO nsion.ExtensionModule - - [postgresql] "PostgreSQL Authentication" (/etc/guacamole/extensions/guacamole-aut h-jdbc-postgresql-1.4.0.jar)
23:32:06.468 [main] INFO nsion.ExtensionModule - - [ldap] "LDAP Authentication" (/etc/guacamole/extensions/guacamole-auth-ldap-1.4.0.
jar)
23:32:06.468 [main] INFO nsion.ExtensionModule - - [openid] "OpenID Authentication Extension" (/etc/guacamole/extensions/guacamole-a uth-sso-openid-1.4.0.jar)
23:32:06.468 [main] INFO nsion.ExtensionModule - - [saml] "SAML Authentication Extension" (/etc/guacamole/extensions/guacamole-auth -sso-saml-1.4.0.jar)
23:32:06.468 [main] INFO nsion.ExtensionModule - To change this order, set the "extension-priority" property or rename the extension files . The default priority of extensions is dictat
ed by the sort order of their filenames.
...
...
guacd-hostname
Guacamole代理守护程序(guacd)监听的host地址。如果省略,Guacamole将假定guacd监听在localhost上。
guacd-port
Guacamole代理守护进程(guacd)监听的端⼝,如果省略,Guacamole将假定guacd监听4822端⼝。
guacd-ssl
如果设置为true,Guacamole将要求web应⽤程序和guacd直接进⾏SSL/TLS加密。默认情况下,⼆者之间的通信是没有加密的。
注意,如果启⽤此选项,还必须通过命令⾏选项将guacd配置为使⽤SSL。这些选项说明在guacd的参
考页上(通过man guacd获取)。你将需要⼀个SSL证书和私钥。
skip-if-unavailable
以逗号分隔的⾝份验证提供程序的标识符列表,应允许在不中⽌⾝份验证过程的情况下内部失败(即不会因某个验证程序失败⽽导致验证过程终⽌)。例如,请求Guacamole忽略由于LDAP⽬录或MySQL服务器意外关闭⽽导致的故障,从⽽允许其他⾝份验证提供程序继续运⾏:
skip-if-unavailable: mysql, ldap
默认情况下,Guacamole对内部故障采取保守的⽅法,任何⾝份验证提供程序中出现内部错误都将中⽌⾝份验证过程。根据错误的性质,这可能意味着在解决故障原因之前,⽤户⽆法登录。skip-if-unavailable属性可⽤于明确告知Guacamole,⼀个或多个基础系统预计会偶尔出现故障,如果出现故障,则依赖其他⽅法系统。
⼀个典型的定义了guacd-hsotname和guacd-port属性明确值得guacamole.properties⽂件,如下所⽰:
# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port:4822
Web应⽤程序中的⽇志记录
默认情况下,Guacamole记录所有消息到终端控制台。像Tomcat那样的servlet容器将会⾃动地将这些消息重定向到⼀个⽇志⽂
件,Tomcat是catalina.out,你可以在Guacamole运⾏时读取该⽂件。根据消息的重要性和严重性,消息被记录成四种级别的⽇志:
error
错误是致命的。尝试了⽇志消息中描述的操作,但⽆法继续,此操作失败是⼀个需要解决的严重问题。
warn
警告通常是⾮致命条件。⾏动仍在继续,但遇到了值得注意的问题。
info
info消息纯粹是信息性的。它们可能对管理员有⽤或有趣,但对于⼀个Guacamole服务的正常运⾏通常并不重要。
debug
调试消息⾮常详细,⾯向开发。⼤多数调试消息将包含堆栈跟踪和内部信息,这些信息在调查代码中的问题时⾮常有⽤。调试消息虽然冗长,但预计不会影响性能。
trace
跟踪消息在意图和详细程度上与调试消息类似,但级别太低,可能会因其频率⽽影响性能。跟踪级别的⽇志记录很少是必要的,主要⽤于围绕所调查的问题提供⾮常详细的上下⽂ 。
Guacamole使⽤⼀个称为 的⽇志框架来记录⽇志消息,默认情况下,将仅记录info或更⾼级别的消息。如果你想更改⽇志级别,或配置Guacamole记录消息的位置和⽅式,你可以通过在GUACAMOLE_HOME下提供⾃⼰的l配置⽂件来实现。例如,
将debug级别的消息记录到控制台,你可以使⽤以下的l配置:
<configuration>
<!-- Appender for debugging -->
<appender name="GUAC-DEBUG"class="ch.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- Log at DEBUG level -->
<root level="debug">
<appender-ref ref="GUAC-DEBUG"/>
</root>
</configuration>
Guacamole和上⾯的⽰例只配置了⼀个appender来记录到控制台,但Logback⾮常灵活,允许任意数量的appende(每个appender都可以记录到单独的⽂件、控制台等),这些appender基于⼀些列标准,包括⽇志级别和消息源。
Logback项⽬的⽹站上提供了。
使⽤默认⾝份验证机制
Guacamole的默认⾝份验证模块很简单,由⽤户名到配置的映射组成。该⾝份验证模块是Guacamole⾃带的,只需从⼀个XML⽂件中读取⽤户名和密码。它始终处于启⽤状态,但仅当XML⽂件存在时才会从中读取,并且相对于任何其他⾝份验证扩展,它的优先级始终是最后⼀个。
还有其他可⽤的⾝份验证模块。Guacamole项⽬提供了数据库后端⽀持的⾝份验证模块,能够从web界⾯管理连接和⽤户,并且其他⾝份验证模块可以使⽤随Guacamole web应⽤程序⼀起提供的扩展API(guacamole-ext)进⾏创建。
Guacamole⽤于读取所有⽤户,密码和配置信息的默认⾝份验证提供者,是⼀个位于GUACAMOLE_l的被称为user mapping的⽂件。Guacamole中包含的⼀个us
er mapping⽂件⽰例如下:
<user-mapping>
<!-- Per-user authentication and config information -->
<authorize username="USERNAME"password="PASSWORD">
<protocol>vnc</protocol>
<param name="hostname">localhost</param>
<param name="port">5900</param>
<param name="password">VNCPASS</param>
</authorize>
<!-- Another user, but using md5 to hash the password
(example below uses the md5 hash of "PASSWORD") -->
<authorize
username="USERNAME2"
password="319f4d26e3c536b5dd871bb2c52e3178"
encoding="md5">
<!-- First authorized connection -->
<connection name="localhost">
<protocol>vnc</protocol>
<param name="hostname">localhost</param>
<param name="port">5901</param>
<param name="password">VNCPASS</param>
</connection>
<!-- Second authorized connection -->
<connection name="otherhost">
<protocol>vnc</protocol>
<param name="hostname">otherhost</param>
<param name="port">5900</param>
<param name="password">VNCPASS</param>
</connection>
</authorize>
</user-mapping>
每个⽤户都指定了相应的<authorize>标签。这个标签包含该⽤户的所有授权连接,每个连接都⽤<connection>标签表⽰。每
个<connection>标签都包含⼀个相应的协议和⼀组特定于协议的参数,分别⽤<protocol>和<param>标签指定。
添加⽤户
使⽤l时,username/password对由<authorize>标签指定,每个标签都有username和password属性。每个<authorize>标签都授权特定的username/password对来访问标记内的所有连接:
<authorize username="USER"password="PASS">
...
</authorize>
在上⾯的例⼦中,密码将以明⽂形式列出。如果不想这样做,也可以使⽤MD5哈希指定密码:
<authorize username="USER"
password="319f4d26e3c536b5dd871bb2c52e3178"
encoding="md5">
...
</authorize>
修改l后,Guacamole将⾃动重新读取该⽂件,你的更改将⽴即⽣效。新添加的⽤户将能够登录——⽆需重新启动servlet 容器。
向⽤户添加连接
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论