在Amazon Linux上安装Apache Guacamole

首先

Apache Guacamole是一种基于浏览器的远程桌面客户端。
可以通过支持HTML5的浏览器访问和远程连接。

在这里,我们的目标是使用Amazon Linux作为跳板来连接到另一台Windows Server进行RDP连接。

环境

实例刚刚创建完成。
弹性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

$ sudo yum update

启用EPEL

$ sudo yum-config-manager --enable epel

gcc可以用于编译C代码。

$ sudo yum install gcc

Java Development Kit (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

维尼

$ 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

湖猫

安装

$ 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行

JRE_HOME=/usr/java/default
CATALINA_HOME=/usr/local/tomcat
export JRE_HOME CATALINA_HOME
$ source /etc/profile
$ sudo vim /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

经理应用程序的使用设置

添加用户

$ sudo vim /opt/apache-tomcat/conf/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
<?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>

安装所需的依赖项

这次只是支持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

鳄梨酱设定

$ sudo mkdir /etc/guacamole
$ sudo vim /etc/guacamole/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

截图

ログイン画面
RDP画面
Disconnected画面

TODO

在/etc/init.d/tomcat8中添加”GUACAMOLE_HOME”是否合适?
如果有更好的方法,那么进行修正。

请提供以下所述的中文原生解释只需要一个选项:

参考

· 鳄梨酱使用手册

适用于跳板服务器!可以从浏览器连接至VNC、RDP的远程桌面客户端『Guacamole』

将自己的家庭服务器转化为虚拟实验室并引入Guacamole。

广告
将在 10 秒后关闭
bannerAds