guacamoleで何処でもリモートデスクトップ

外から色々つつくのに、これが最適!なソリューションが見つかったので
色々やってみました。

最初はyumからインストールできたんですが、バージョンをオフィシャルサイトで
確認してみると・・・・今入ってるのが結構古い事が判明。
ReverseProxyの環境で上手く動かないのもあって、最新版に入れ替えちゃえ!って事で。

libguac-client-rdp-0.8.4-4.el7.x86_64
libguac-client-ssh-0.8.4-4.el7.x86_64
guacd-0.8.4-4.el7.x86_64
libguac-client-vnc-0.8.4-4.el7.x86_64
guacamole-0.8.4-1.el7.noarch
libguac-0.8.4-4.el7.x86_64

ので、さっくり消しましたw(これも後でハマってしまった原因でもあるのですが・・・)
rpm -e libguac-client-rdp libguac-client-ssh guacd libguac guacamole libguac

さて、オフシャルサイトからダウンロードして、guacamole-serverの自前ビルドです。
(guacamole-clientは、自前ビルドする必要せはあまりないかも。warファイルで十分です)

この後でソースを展開してconfigureを実行しますが、この辺がないと色々動きません。
ので、ちゃっちゃと入れちゃいましょう。

yum -y install freerdp freerdp-libs freerdp-plugins freerdp-devel
yum -y install pango-devel
yum -y install pangomm pangomm-devel
yum -y install libssh2-devel
yum -y install libtelnet
yum -y install libvncserver libvncserver-devel
yum -y install libvorbis libvorbis-devel
yum -y install pulseaudio pulseaudio-utils pulseaudio-libs pulseaudio-libs pulseaudio-libs-devel

ここまで入れてconfigureを流すとこうなります。
そしたらrdp・vnc・sshが使えるようになります。

------------------------------------------------
guacamole-server version 0.9.3
------------------------------------------------

   Library status:

     freerdp ............. no
     pango ............... yes
     libssh2 ............. no
     libssl .............. yes
     libtelnet ........... no
     libVNCServer ........ no
     libvorbis ........... no
     libpulse ............ no

   Protocol support:

      RDP ....... no
      SSH ....... no
      Telnet .... no
      VNC ....... no

   Init scripts: no

っと・・・systemdのscriptだけは、インストール前に引き上げて
ありましたので流用しますw
こんなかんじに直してみました。
なんだか自前ビルドしたらrootでないと動かなかったんですが、まぁいいかってことでw

[Unit]
Description=Guacamole proxy daemon
Documentation=man:guacd(8)
After=network.target

[Service]
EnvironmentFile=-/etc/sysconfig/guacd
Environment=HOME=/var/lib/guacd
ExecStart=/usr/local/sbin/guacd -f $OPTS
Restart=on-failure
# User=guacd
# Group=guacd

[Install]
WantedBy=multi-user.target

そして・・・jarをdeployしたんですが、何やってもログインが出来ません。
ログを見て、色々調べた所・・・・・。
これをやらないとダメだって事がやっと判明。
昔はClassPathに無いとダメだったとか・・・色々書いてありましたが
結局のところオフィシャルサイトのマニュアルに書いてあったので、一発解決でした。

mkdir /usr/share/tomcat/.guacamole
ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat6/.guacamole/

ReverseProxy側の設定はこんなしてます。
https->httpへ飛ばしてます。https->ajpはダメでした(残念)
確かにAJPの方が速いらしですが、これで十分かも。(WiMaxIIでの体感速度)

当初うまく行かなかったのですが・・・・。
ヒントはこちらのサイトから。
あと、味噌はproxy_buffering off;でした。
これ入れないと画面は出てもマウスカーソルがクリック出来ず・・・・結構悩みました。
(無理して自前ビルドしなくても良かったのかも・・・・)

server {
        listen          443;
        server_name     hogehoge.xxxx;
        root            /usr/share/nginx/html;

        ssl                     on;
        ssl_certificate         /etc/httpd/cert/xxxxxx_cert.pem;
        ssl_certificate_key     /etc/httpd/cert/xxxxxx_key.pem;

        ssl_protocols           TLSv1 TLSv1.1 TLSV1.2;
        ssl_ciphers             HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;

        access_log off;

        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_buffering off;
                proxy_pass http://hogehoge:8080;
        }
}

最後にuser-map.xmlですが・・・。
内容についてオフィシャルサイトマニュアル見たら一撃なんで、そっちを参照してくださいw
ウチではこんな感じで設定してみました。

<user-mapping>
   <authorize username="USER" password="PASSWORD">
     <!-- connection to hogehogewin -->
      <connection name="hogehogewin_rdp">
        <protocol>rdp</protocol>
        <param name="hostname">hogehoge_win</param>
        <param name="port">3389</param>
        <param name="console">true</param>
      </connection>
   </authorize>
</user-mapping>

ウチはSSH張ったりリバースプロキシ入れてたりとか、ちょっと特殊かも知れませんが
ちょこっと頑張れば設定出来ました(色々ハマってしまいましたが)

でも、おかげさまで何処でもアクセスできるようになったのでめでたしめでたしw

%d人のブロガーが「いいね」をつけました。