以前にも触ったことがあるが、ブラウザから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とかは制限できるけど、ファイルの中身をコピペで持ってくるような使い方はできるので)。