CentOS 7にRDP/SSH/VNCの踏み台サーバであるApache Guacamole(0.9.9)をインストールする

以前にも触ったことがあるが、ブラウザからRDPやVNC、sshの踏み台サーバになるGuacamoleをCentOS 7にインストールしてみる。

前に触ったときはApacheプロジェクトに入る前だったので、それからどうなったかな。 とりあえず、前に比べてドキュメントが充実してきてるみたい。 LDAP認証とかもできるようになってるようだ。

1. Apache Guacamoleのインストールをする

インストールは簡単。 以下のコマンドで、Guacamoleのインストールスクリプトを取得してキックするだけだ。 インストールスクリプトは、実行時にLANG=Cを指定しないとコケるので注意。

yum install -y wget git
wget http://sourceforge.net/projects/guacamoleinstallscript/files/CentOS/guacamole-install-script.sh
chmod +x guacamole-install-script.sh
LANG=C ./guacamole-install-script.sh

インストールスクリプトをキックすると、↑のような表示がされるので、設定項目(DBのユーザ名やパスワードなど)を入力していく。 入力が終わったらインストールが始まる。 (処理途中でSSL証明書の内容について聞かれるので、それについても対応する)

無事インストールが完了したら、以下のコマンドを実行して443番ポートを開放する。

firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload

最後に、好みの日本語対応のフォントをインストールしてしまおう(デフォルトの状態でも日本語表示可能なフォントがインストールされるが、好きなフォントを設定できるので)。 スクリプト等を書くことを考慮して、等幅フォントで、かつ日本語も使える「Ricty Diminished」をインストールする。

sudo mkdir /usr/share/fonts/RictyDiminished/
git clone https://github.com/edihbrandon/RictyDiminished
cd RictyDiminished/
sudo cp *.ttf /usr/share/fonts/RictyDiminished/
fc-cache -fv

最後に、「https://IPアドレスorホスト名/guacamole」へブラウザからアクセスすると、以下のような画面に遷移する。

2. もろもろの設定を行う

まず、先ほどの画面からログイン(デフォルトのID/PWはguacadmin/guacadmin)して「settings」を開くと、いろいろと設定できる。 「guacadmin」ユーザは管理権限があるので、デフォルトパスワードからは変えるようにしよう。

ユーザや接続先の作成については、もう見ればわかるようなUIなので割愛。 どの接続先をリストに出すかは、ユーザごとにチェックボックスで指定可能だ。

接続先では特定のコマンドのみを許可したい(そしてコンソールにアクセスはさせたくない)といった場合は、「Execute command」に対象のコマンドを書き込んでやればよい。

RDPの場合、サウンドを転送するかどうか、RemoteAppでの接続にするかなど細かい設定ができるようだ。 特にRemoteAppは、直接接続の場合だとこちらのようなRemote Desktopでアクセスして来たら無理やりログアウトさせるような処理が必要ないのは大きいと思う。

VNC接続もいろいろと細かく設定できるようなってるようだ。

3. Apache Guacamole経由でのアクセスをする

もろもろの設定が終わったら、作成したApache Guacamoleからサーバにアクセスしてみよう。 ログイン直後の画面に、そのユーザが接続可能なサーバのリストが表示されるので、好きなサーバにログインしてみよう。

クリップボードを共有したい場合は、「Ctrl + Alt + Shift」でメニューウィンドウが表示されるので、そこから行う。

前に触ったときに比べても、着実に進化しているようだ。 アカウントに応じてログインさせたいサーバ・させたくないサーバもあるし、sshの鍵ファイルは渡したくないこともある(アクセス元制限かけたりする場合でも)。 でも、これをつかえば、例えばサーバのメンテナンス用途でのアクセスも一元化できるし、何よりユーザには秘密鍵もパスワードも見ることができない。

ただ、現時点ではクリップボード共有の無効化設定については議題にもあがってないようなので、要件によってはそこがネックになるかもしれない(scpとかは制限できるけど、ファイルの中身をコピペで持ってくるような使い方はできるので)。