ブラウザからアクセスできるリモートデスクトップクライアントApache Guacamole
Apache Guacamoleは、VNC,SSH,RDP,telnetプロトコルを利用してブラウザ上から端末を操作することができるソフトです。
今回は、CentOS7にインストールしてみました。
環境準備
Apache Guacamoleを利用するためには、色々なパッケージが必要となるためyum等を利用してパッケージをインストールしていきます。
#yum -y install libguac-client-rdp libguac-client-vnc libguac-client-ssh #yum -y install cairo-devel libjpeg-turbo-devel libjpeg-devel libpng-devel uuid-devel #yum install freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel
ffmpegのインストール
Apache Guacamoleには操作を記録する機能もあるため記録用にffmpegをインストールします。
動画記録をしない場合には不要です。
#rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt #rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro #rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm #yum -y install ffmpeg ffmpeg-devel
Apache Guacamole Serverのインストール
Apache Guacamole Serverをダウンロードします。
下記サイトから最新版をダウンロードしました。2017年5月時点では0.9.12でした。
Apache Guacamole
ダウンロードしたファイルを解凍し、要件を満たしているかを確認します。
#autoreconf -fi #./configure --with-init-dir=/etc/init.d
利用したいプロトコルサポートがyesになっているか、必要ライブラリがインストールされているかを確認します。
実行結果を下記のようになります。
------------------------------------------------ guacamole-server version 0.9.12-incubating ------------------------------------------------ Library status: freerdp ............. yes pango ............... yes libavcodec .......... yes libavutil ........... yes libssh2 ............. yes libssl .............. yes libswscale .......... yes libtelnet ........... yes libVNCServer ........ yes libvorbis ........... yes libpulse ............ yes libwebp ............. yes Protocol support: RDP ....... yes SSH ....... yes Telnet .... yes VNC ....... yes Services / tools: guacd ...... yes guacenc .... yes Init scripts: /etc/init.d Type "make" to compile guacamole-server.
下記コマンドを実行し、インストールします。
#make #make install #ldconfig
Apache Guacamole Clientのインストール
tomcatのインストール
Apache Guacamole ClientはJavaで動作するためtomcatが必要になりますので、tomcatをインストールします。
#yum -y install java-1.7.0-openjdk.x86_64 #yum -y install tomcat #yum -y install tomcat-webapps tomcat-admin-webapps
Mavenのインストール
Apache Guacamole ClientのコンパイルにMavenが必要になりますので、Mavenをインストールします。
#wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo #sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo #yum -y install apache-maven #mvn --version Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T01:41:47+09:00) Maven home: /usr/share/apache-maven Java version: 1.7.0_131, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el7_3.x86_64/jre Default locale: ja_JP, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-514.16.1.el7.x86_64", arch: "amd64", family: "unix"
Apache Guacamole Clientインストール
下記ページから、Clientをダウンロードします。
Apache Guacamole Client
ファイルを解凍し、コンパイルします。
# tar -zxf guacamole-client-0.9.12-incubating.tar.gz #cd guacamole-client-0.9.12-incubating #mvn package
warファイルをtomcatのwebappsディレクトリへコピー
#cp guacamole/target/guacamole-0.9.12-incubating.war /var/lib/tomcat/webapps/guacamole.war
認証用ファイルuser-mapping.xmlの作成
user-mapping.xmlに認証情報を記載し、接続先を記載します。
認証情報はLDAPやDBを指定することもできますが、今回は一人でしか利用しないのでuser-mapping.xmlファイルに記載します。
#mkdir /usr/local/guacamole #vi user-mapping.xml
/usr/local/guacamoleを設定ファイルの保存先としましたが、自由に変更可能です。
user-mapping.xmlは下記のように記載します。
<user-mapping> <authorize username="利用したユーザ名を記載" password="ハッシュ化したパスワード" encoding="md5"> <connection name="cent1"> <protocol>ssh</protocol> <param name="hostname">192.168.1.1</param> <param name="port">22</param> </connection> <connection name="win10"> <protocol>rdp</protocol> <param name="hostname">192.168.1.2</param> <param name="port">3389</param> </connection> <connection name="win7"> <protocol>rdp</protocol> <param name="hostname">192.168.1.7</param> <param name="port">3389</param> </connection> </authorize> </user-mapping>
一例ですので、他のプロトコル等を利用したい場合には公式ページでご確認ください。
この例の場合には、
- 192.168.1.1 のCentOS7へSSHアクセス
- 192.168.1.2 のWindows 10へリモートデスクトップアクセス
- 192.168.1.3 のWindows 7へリモートデスクトップアクセス
をする設定になります。nameも自由に変更できるのでわかりやすいホスト名等にするといいと思います。
起動ファイルの編集(tomcat,guacd)
user-mapping.xmlファイルを保存した場所を、GUACAMOLE_HOMEという環境変数で指定する必要があります。
#vi /etc/sysconfig/tomcat 末尾に下記を追記 GUACAMOLE_HOME=/usr/local/guacamole
#/etc/sysconfig/guacd 末尾に下記を追記 GUACAMOLE_HOME=/usr/local/guacamole
tomcatとguacdの起動
tomcatを先に起動し、guacdを後から起動します。
#systemctl start tomcat #systemctl start guacd
Apache Guacamoleの起動確認
ブラウザを利用して、http://サーバIP:8080/guacamole/ へアクセスします。
下記のような画面が表示されます。
user-mapping.xmlで指定したユーザIDとパスワードを入力し、【Login】をクリックします。
ログインに成功すると下記画面になります。
すでに接続テストをした後のため、RECENT CONNECTIONSにいくつか表示されています。
ALL CONNECTIONSにuser-mapping.xmlで定義したサーバ一覧が表示されているので、接続したいホストをクリックします。
ブラウザからアクセスし、操作することができるようになります。
Windowsの場合、リモートデスクトップのオプションで、
「ネットワークレベル認証でリモートデスクトップを実行しているコンピュータからのみ接続を許可する」としている場合接続できないことがあります。
その場合には、
「リモートデスクトップを実行しているコンピュータからの接続を許可する」
を選択し、接続を試してみてください。
まとめ
ブラウザから利用できるので、色々な用途に使えそうです。
メモリ2GBのマシンに構築しましたが、ローカル環境内では特に遅延することもなく動いています。
クラウドサービス上に踏み台サーバを構築し、クラウドサービス上にあるローカルIPしかもたないサーバへアクセスするのにも便利かと思います。(VPN経由でアクセスできれば不要ですね)
またWindows Serverで踏み台サーバを構築した場合には、リモートデスクトップ用のライセンスも必要になるため、このようなOSSを使って構築することでコストの削減にもなりますね。
操作記録機能もあるようなので、別な機会に試してみたいと思います!