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

先日からリモートデスクトップに関する踏み台サーバについての記事を書いてきたが、今回はRDPの他、VNCへも接続が可能なブラウザベースのリモートデスクトップクライアント『Guacamole』を紹介する。
これはLinux上で動作させるWebベースのサーバサイドプログラムで、HTML5に対応しているブラウザでアクセスする。今回の検証では、CentOS 7上にインストールし踏み台サーバを構築。LAN上のWindowsにRDPで接続する。なお、CentOS 7のファイアウォールについては以下のコマンドで停止済とする。

systemctl stop firewalld

1.Guacamoleのインストール

さて、このGuacamole、Webベースのプログラムということで前提となるプログラムが幾つか存在している。
まずは、yumのレポジトリにEPELを追加する。

rpm -ivh  http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
yum update

次に、以下のコマンドでGuacamoleその他必要なパッケージをインストールする。

yum -y install guacd libguac-client-rdp libguac-client-vnc libguac-client-ssh guacamole

インストール完了後、サービスの自動起動設定を行う。

systemctl enable guacd
systemctl enable tomcat

2.Guacamoleの設定

インストール完了後、Guacamoleの設定を行う。
「/etc/guacamole/user-mapping.xml」を開き、以下のように編集する。内容は自身の環境に合わせて記述する。

<user-mapping>
    <authorize
     username="Guacamoleへのログインユーザ名"
     password="Guacamoleへのログインパスワード(ハッシュ値)"
     encoding="md5">

        <connection name="接続先の名称1">
            <protocol>接続に利用するプロトコル</protocol>
            <param name="hostname">接続先ホスト名(IPアドレス)</param>
        </connection>  

        <connection name="接続先の名称2">
            <protocol>接続に利用するプロトコル</protocol>
            <param name="hostname">接続先ホスト名(IPアドレス)</param>
        </connection>  

        …

    </authorize>
</user-mapping>

パスワードのハッシュ値については、以下のコマンドで求める事が出来る。

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

接続先については、以下の設定例のように記述出来る。

<connection name="RDP(Windows Server)">
            <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>  

        <connection name="VNC(Linux Server)">
            <protocol>vnc</protocol>
            <param name="hostname">IPアドレス</param>
            <param name="password">VNCで接続するパスワード</param>
            <param name="port">RDPで接続するポート</param>
        </connection>

        <connection name="SSH(Linux Server)">
            <protocol>ssh</protocol>
            <param name="hostname">IPアドレス</param>
            <param name="username">SSHで接続するユーザ名</param>
            <param name="password">SSHで接続するパスワード</param>
            <param name="port">SSHで接続するポート</param>
        </connection>

        <connection name="Telnet(Linux Server)">
            <protocol>telnet</protocol>
            <param name="hostname">IPアドレス</param>
            <param name="username">Telnetで接続するユーザ名</param>
            <param name="password">Telnetで接続するパスワード</param>
            <param name="port">Telnetで接続するポート</param>
        </connection>

設定出来るパラメーターについては、こちらを参照すると良いだろう。
設定完了後、以下のコマンドで『Guacamole』及びTomcatを起動させる。

systemctl start guacd
systemctl start tomcat

これで『Guacamole』を利用する準備が出来た。

3.接続

それでは実際に接続してみよう。
以下のURLにブラウザから接続する。

http://サーバのホスト名(IPアドレス):8080/guacamole/index.xhtml

接続すると、以下のようなログイン画面が表示される。
ユーザ名、パスワードを入力してログイン。

ログインすると先ほど設定した接続先が表示されるので、ログインしたい接続先をクリックする。

ユーザ名、パスワードを設定していれば自動的にログインされる。
タブには接続先のホスト名(IPアドレス)が出力される。

さすがにWebベースのクライアントなので少々もたつく事もあったが、動作自体は問題なく行う事が出来た。
Windows Serverを踏み台にしていると同時ログイン数の制限があるが、こういったソフトウェアを使えばより簡単に、同時に複数人が接続する事が出来る。