2015-10-26 11 views
0

После успешного создания dockerized гуакамоле 0.9.8 вдоль линийгуакамоле У вас нет разрешения на доступ к этой связи»

с скриптом ниже и войдите в систему с пользователем: guacadmin password: guacadmin Мне удалось настроить пользователя и соединение rdp. Пользовательский интерфейс Guacamole можно использовать непосредственно через отображенной порт, сконфигурированный в сценарии установки докер (8380 в моем случае), но и через обратный апача прокси настроен в соответствии guacamoles инструкции с:

<Location /guac/ > 
    Order allow,deny 
    Allow from all 
    ProxyPass http://localhost:8380/guacamole/ flushpackets=on 
    ProxyPassReverse http://localhost:8380/guacamole/ 
    </Location> 

Я пытался следовать за руководством для Rdp соединений http://guac-dev.org/doc/gug/configuring-guacamole.html#rdp

, но при использовании обратного прокси закончил с:

Error message

Что произошло также другим пользователям видеть:

https://sourceforge.net/p/guacamole/discussion/1110834/thread/73abbe35/

Как я могу отладить эту ситуацию, чтобы найти правильные настройки?

Существует, кажется, что-то подозрительное, поскольку в качестве администратора, например. guacadmin я получаю Error message on permissions при попытке включить и сохранить права доступа для подключения в следующем диалоге: enter image description here

У меня есть доступ к БД MySQL используется для разрешений например с

mysql> show tables; 
+---------------------------------------+ 
| Tables_in_guacamole_db    | 
+---------------------------------------+ 
| guacamole_connection     | 
| guacamole_connection_group   | 
| guacamole_connection_group_permission | 
| guacamole_connection_history   | 
| guacamole_connection_parameter  | 
| guacamole_connection_permission  | 
| guacamole_system_permission   | 
| guacamole_user      | 
| guacamole_user_permission    | 
+---------------------------------------+ 

Это Dockerizing Скрипт для гуакамоле я использовал

#!/bin/bash 
# 
# WF 2015-10-26 
# 
# Guacamole (semi) automatic setup of guacamole Remote Desktop server for docker 
# see 
# http://guac-dev.org/doc/gug/guacamole-docker.html 
# http://kalzi.github.io/2015/guacamole-with-docker-containers/ 
# 
# Since: 2015-10-26 
# 

# config variables 

# images 
GUAC=glyptodon/guacamole 
GUACD=glyptodon/guacd 
MYSQL=mysql 

# DB settings 
DB=guacamole_db 
DB_USER=guacamole_user 

# prefix to be used for container names 
prefix="lab" 

#ansi colors 
#http://www.csc.uvic.ca/~sae/seng265/fall04/tips/s265s047-tips/bash-using-colors.html 
blue='\033[0;34m' 
red='\033[0;31m' 
green='\033[0;32m' # '\e[1;32m' is too bright for white bg. 
endColor='\033[0m' 

# 
# a colored message 
# params: 
#  1: l_color - the color of the message 
#  2: l_msg - the message to display 
# 
color_msg() { 
    local l_color="$1" 
    local l_msg="$2" 
    echo -e "${l_color}$l_msg${endColor}" 
} 

# 
# error 
# 
# show an error message and exit 
# 
# params: 
#  1: l_msg - the message to display 
error() { 
local l_msg="$1" 
# use ansi red for error 
color_msg $red "Error: $l_msg" 1>&2 
exit 1 
} 

# 
# show usage 
# 
usage() { 
echo "usage: guac-setup" 
# -h|--help|usage|show this usage 
echo " -h|--help: show this usage" 
# -m|--mysql|run mysql in linked container 
echo " -m|--mysql:run mysql in linked container" 
# -r|--run|run|run guacamole 
echo " -p|--pull: pull guacamole" 
echo " -pf|--prefix: set the containername prefix" 
echo " -r|--run: run guacamole" 
color_msg $blue "Example:" 
echo " sudo ./guac-setup -p -pf test -r" 
exit 1 
} 

# 
# generate a random password 
# 
random_password() { 
date +%N | sha256sum | base64 | head -c 16 ; echo 
} 

# 
# run mysql in container 
# 
mysql_from_container() { 
    local l_option="$1" 
    local l_db="$2" 
    local l_dbparam="" 
    if [ "$l_db" != "" ] 
    then 
    l_dbparam=" $l_db" 
    fi 
    local l_cmd='exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'"$l_dbparam" 
    #echo "$l_cmd" 
    docker run $l_option --link $prefix-mysql:mysql --rm mysql sh -c "$l_cmd" 
} 

# 
# initialize the database 
# 
init_db() { 
local l_tmp=/tmp/initdb.sql 
#docker run -it $GUAC /bin/bash 
color_msg $blue creating database 

cat << EOF | mysql_from_container -i 
DROP DATABASE IF EXISTS $DB; 
CREATE DATABASE IF NOT EXISTS $DB; 
DROP USER '${DB_USER}'; 
CREATE USER '${DB_USER}' IDENTIFIED BY '${DB_PASSWD}'; 
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'; 
FLUSH PRIVILEGES; 
EOF 
    color_msg $blue "getting initdb.sh" 
    docker run --rm $GUAC /opt/guacamole/bin/initdb.sh --mysql > $l_tmp 
    color_msg $blue "initializing database" 
    # pipe the result thru mysql 
    cat $l_tmp | mysql_from_container -i "$DB" 
    color_msg $blue "keeping password for db $DB at /var/lib/mysql/guac_passwd" 
    #echo $DB_PASSWD 
    echo $DB_PASSWD | docker exec -i $prefix-mysql /usr/bin/tee /var/lib/mysql/guac_passwd > /dev/null 
} 

# 
# run guacamole 
# 
run() { 
    local l_prefix="$1" 
    MYSQL_ROOT_PASSWORD=`random_password` 
    color_msg $blue "starting $l_prefix-guacd" 
    docker run --name $l_prefix-guacd -d $GUACD 
    color_msg $blue "starting $l_prefix-mysql" 
    docker run --name $l_prefix-mysql -e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD -d mysql:latest 
    docker ps -a --filter "name=$l_prefix*" 
} 

# 
# pull images 
# 
pull() { 
    for image in $GUACD $GUAC $MYSQL 
    do 
    docker images | cut -c1-22 | grep $image 
    if [ $? -ne 0 ] 
    then 
     docker pull $image 
    else 
     color_msg $green "$image already pulled" 
    fi 
    done 
} 

# 
# start it 
# 
startit() { 
    DB_PASSWD=`docker exec -i $prefix-mysql /bin/cat /var/lib/mysql/guac_passwd` 
    # now run the whole show 
    docker run --name $prefix-guacamole --link $prefix-guacd:guacd \ 
    --link $prefix-mysql:mysql  \ 
    -e MYSQL_DATABASE=$DB \ 
    -e MYSQL_USER=$DB_USER \ 
    -e MYSQL_PASSWORD=$DB_PASSWD \ 
    -d -p 8380:8080 $GUAC 
} 

# start of script 

# check arguments 
if [ $# -eq 0 ] 
then 
    usage 
fi 
while test $# -gt 0 
do 
    case $1 in 
    # -h|--help|usage|show this usage 
    -h|--help) 
     usage;; 

    # -p|--pull|pull|pull guacamole 
    -p|--pull) 
     pull;; 

    # -pf|--prefix|set containername prefix 
    -pf|--prefix) 
     shift 
     prefix=$1 
     ;; 

    # -r|--run|run|run guacamole 
    -r|--run) 
     run $prefix;; 

    # -m|--mysql|run mysql connection to container 
    -m|--mysql) 
     mysql_from_container -it 
     ;; 

    -ms|--mysql_shell) 
     docker exec -it $prefix-mysql /bin/bash 
     ;; 

    -i|--initdb) 
     DB_PASSWD=`random_password` 
     init_db 
     ;; 

    --setup) 
     pull 
     run $prefix 
     ;; 

    --start) 
     startit 
     ;; 
    esac 
    shift 
done 

ответ

1

Как я могу отладить эту ситуацию, чтобы найти правильные настройки?

В случае ошибок аутентификации, подобных этому, первое, что вам нужно сделать, это проверить журналы Tomcat на наличие ошибок. Если возникает ошибка, из-за которой Guacamole возвращает «Permission denied», эта ошибка должна регистрироваться и будет коррелировать во времени с действиями, которые приводят к ошибке.

Если ничто не выпрыгивает по мере необходимости, вы также можете попробовать enabling debug-level logging. Это предполагает создание logback.xml файла в GUACAMOLE_HOME содержащего следующее:

<configuration> 

    <!-- Appender for debugging --> 
    <appender name="GUAC-DEBUG" class="ch.qos.logback.core.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> 

Если вы делаете это с официальными изображениями Docker, GUACAMOLE_HOME будет /root/.guacamole, и вам нужно будет перезапустить контейнер, чтобы заставить Tomcat для перезагрузки и перезагрузок конфигурации Guacamole.

Если вы используете Guacamole за прокси-сервером, например Nginx или Apache, я также рекомендую сначала попытаться напрямую подключиться к Guacamole. Неправильная конфигурация прокси-сервера может помешать работе WebSocket, а затем предотвратить работу отказоустойчивого HTTP-туннеля. Такая неправильная конфигурация может показаться с точки зрения Гуакамоле, что вы пытаетесь получить доступ к ресурсу без входа в систему, что приводит к ошибке разрешения.

+0

Thx Я принял ответ, так как я специально просил отладить ситуацию. Теперь я хотел бы сделать две вещи: 1) исправить ситуацию 2) подать сообщение об ошибке/запрос на изменение, что должно быть правильное сообщение об ошибке, когда туннель HTTP не работает - лучше даже должна быть опция отладки соединения для устранение проблем с настройкой –

+0

Разрешение на отказ в диалоговом окне администратора по-прежнему существует. –

0

http://guac-dev.org/doc/gug/proxying-guacamole.html#websocket-and-apache

имеет необходимую конфигурацию (показанную здесь, приспособленный для 8380 порта используется и/путь guac)

<Location /guac/websocket-tunnel> 
    Order allow,deny 
    Allow from all 
    ProxyPass ws://localhost:8380/guacamole/websocket-tunnel 
    ProxyPassReverse ws://localhost:8380/guacamole/websocket-tunnel 
</Location> 

Для того, чтобы активировать конфигурацию я использовал:

a2enmod proxy_wstunnel 
Considering dependency proxy for proxy_wstunnel: 
Module proxy already enabled 
Enabling module proxy_wstunnel. 
To activate the new configuration, you need to run: 
    service apache2 restart 
service apache2 restart 
* Restarting web server apache2   

Теперь соединение работает как напрямую через порт 8380, так и через конфигурацию обратного прокси, которая отображает его на/guac на моем основном сервере.

Смежные вопросы