LoginSignup
5
8

More than 5 years have passed since last update.

Amazon Linux にApache Guacamoleをインストール

Last updated at Posted at 2017-02-24

はじめに

Apache Guacamoleはブラウザベースのリモートデスクトップクライアントです。
HTML5に対応しているブラウザでアクセスし、リモート接続することができます。

ここでは、Amazon Linuxを踏み台にして、別のWindows ServerにRDP接続することを目的としています。

環境

インスタンスは作成したばっかりの状態です。
Elastic IPは割り当ててあります。

$ uname -a
Linux ip-hoge-hoge-hoge-hoge 4.4.41-36.55.amzn1.x86_64 #1 SMP Wed Jan 18 01:03:26 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

インストール 下準備

yum update

$ sudo yum update

EPEL有効化

$ sudo yum-config-manager --enable epel

gcc

$ sudo yum install gcc

JDK

事前にOracleからJDK8のrpmを入手して~/に配備する

$ sudo rpm -ivh jdk-8u121-linux-x64.rpm
$ vim .bash_profile
JAVA_HOME=/usr/java/default
export JAVA_HOME
$ source .bash_profile

Maven

$ cd
$ curl -O http://ftp.jaist.ac.jp/pub/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.zip
$ unzip apache-maven-3.3.9-bin.zip
$ sudo mv apache-maven-3.3.9 /opt/
$ vim .bash_profile
PATH=/opt/apache-maven-3.3.9/bin:$PATH
$ source .bash_profile

Tomcat

インストール

$ sudo useradd -s /sbin/nologin tomcat
$ curl -O http://ftp.kddilabs.jp/infosystems/apache/tomcat/tomcat-8/v8.5.11/bin/apache-tomcat-8.5.11.tar.gz
$ tar -xzvf apache-tomcat-8.5.11.tar.gz
$ sudo mv apache-tomcat-8.5.11 /opt/apache-tomcat
$ sudo chown -R tomcat:tomcat /opt/apache-tomcat

サービス設定

$ sudo vim /etc/profile

3行追加

/etc/profile
JRE_HOME=/usr/java/default
CATALINA_HOME=/usr/local/tomcat
export JRE_HOME CATALINA_HOME
$ source /etc/profile
$ sudo vim /etc/init.d/tomcat8
/etc/init.d/tomcat8
#!/bin/bash
#
# tomcat8
#
# chkconfig: - 80 20
#
### BEGIN INIT INFO
# Provides: tomcat8
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start:
# Default-Stop:
# Description: Tomcat 8
# Short-Description: start and stop tomcat
### END INIT INFO

## Source function library.
#. /etc/rc.d/init.d/functions
export GUACAMOLE_HOME=/etc/guacamole
export JAVA_HOME=/usr/java/default
export JAVA_OPTS="-Dfile.encoding=UTF-8 \
  -Dnet.sf.ehcache.skipUpdateCheck=true \
  -XX:+UseConcMarkSweepGC \
  -XX:+CMSClassUnloadingEnabled \
  -XX:+UseParNewGC \
  -Xms512m -Xmx512m"
export PATH=$JAVA_HOME/bin:$PATH
TOMCAT_HOME=/opt/apache-tomcat
TOMCAT_USER=tomcat
SHUTDOWN_WAIT=20

tomcat_pid() {
  echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
}

start() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ] 
  then
    echo "Tomcat is already running (pid: $pid)"
  else
    # Start tomcat
    echo "Starting tomcat"
    ulimit -n 100000
    umask 007
    /bin/su -p -s /bin/sh $TOMCAT_USER $TOMCAT_HOME/bin/startup.sh
  fi


  return 0
}

stop() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]
  then
    echo "Stoping Tomcat"
    /bin/su -p -s /bin/sh $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh

    let kwait=$SHUTDOWN_WAIT
    count=0;
    until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
    do
      echo -n -e "\nwaiting for processes to exit";
      sleep 1
      let count=$count+1;
    done

    if [ $count -gt $kwait ]; then
      echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds"
      kill -9 $pid
    fi
  else
    echo "Tomcat is not running"
  fi

  return 0
}

case $1 in
start)
  start
;; 
stop)   
  stop
;; 
restart)
  stop
  start
;;
status)
  pid=$(tomcat_pid)
  if [ -n "$pid" ]
  then
    echo "Tomcat is running with pid: $pid"
  else
    echo "Tomcat is not running"
  fi
;; 
esac    
exit 0
$ sudo chmod +x /etc/init.d/tomcat8
$ sudo service tomcat8 start
$ sudo chkconfig tomcat8 on

Manager Appの利用設定

ユーザ追加

$ sudo vim /opt/apache-tomcat/conf/tomcat-users.xml
tomcat-users.xml
<?xml version="1.0" encoding="UTF-8"?>
...
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
...
  <role rolename="manager-gui"/>
  <user username="admin" password="admin" roles="manager-gui"/>
</tomcat-users>

アクセス制限解除

$ sudo vim /opt/apache-tomcat/webapps/manager/META-INF/context.xml
tomcat-users.xml
<?xml version="1.0" encoding="UTF-8"?>
...
<Context antiResourceLocking="false" privileged="true" >
  <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
</Context>

Required dependenciesになっているものをインストール

今回はRDP対応だけです。

$ sudo yum install cairo-devel libjpeg-turbo-devel libpng-devel uuid-devel freerdp-devel

Guacamoleサーバ インストール

$ cd
$ curl -O http://ftp.meisei-u.ac.jp/mirror/apache/dist/incubator/guacamole/0.9.11-incubating/source/guacamole-server-0.9.11-incubating.tar.gz
$ tar -xzf guacamole-server-0.9.11-incubating.tar.gz
$ cd guacamole-server-0.9.11-incubating/

$ ./configure --with-init-dir=/etc/init.d
$ make
$ sudo make install
$ sudo ldconfig
$ sudo chkconfig guacd on

Guacamoleクライアント インストール

$ cd
$ curl -O http://ftp.riken.jp/net/apache/incubator/guacamole/0.9.11-incubating/source/guacamole-client-0.9.11-incubating.tar.gz
$ tar -xzf guacamole-client-0.9.11-incubating.tar.gz
$ cd guacamole-client-0.9.11-incubating/
$ mvn package
$ sudo cp guacamole/target/guacamole-0.9.11-incubating.war /opt/apache-tomcat/webapps/guacamole.war

Guacamole設定

$ sudo mkdir /etc/guacamole
$ sudo vim /etc/guacamole/guacamole.properties
guacamole.properties
guacd-hostname: localhost
guacd-port: 4822
user-mapping: /etc/guacamole/user-mapping.xml
$ sudo vim /etc/guacamole/user-mapping.xml
<user-mapping>
  <authorize
   username="Guacamoleへのログインユーザ名"
   password="Guacamoleへのログインパスワード(ハッシュ値)"
   encoding="md5">

    <connection name="RDP">
      <protocol>rdp</protocol>
      <param name="hostname">接続先ホスト名(IPアドレス)</param>
      <param name="username">RDPで接続するユーザ名</param>
      <param name="password">RDPで接続するパスワード</param>
      <param name="domain">RDPで接続するADドメイン</param>
      <param name="port">RDPで接続するポート</param>
    </connection>

  </authorize>
</user-mapping>

md5のハッシュ値は以下で確認可能です。
RDPの接続パスワードは、md5でハッシュ化しないでそのまま記述しています。
※encoding="md5" を記述しなければ素のパスワードも書けます

echo -n 'パスワード' | md5sum

設定が終わったら各サービスを再起動します。

$ sudo service guacd restart
$ sudo service tomcat8 restart

キャプチャ

http://hoge.hoge.hoge.hoge:8080/guacamole/
からログインします。
ログイン画面

ログインできました。
設定ファイルにアカウント情報を記述してあるので、なにも聞かれずに即座にRDPで接続されます。
RDP画面

サインアウトすると、こんな画面です。
「Recconect」で再接続し、「Logout」でログイン画面に戻ります。
Disconnected画面

TODO

/etc/init.d/tomcat8 に「GUACAMOLE_HOME」を記述するのは如何なものか。
なにか良い方法が分かれば修正する。

参考

Guacamole Manual

踏み台サーバに最適!ブラウザからVNC、RDPに接続出来るリモートデスクトップクライアント『Guacamole』

自宅サーバのバーチャルラボ化 (2) Guacamole導入

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8