GateOneで複数のSSH接続をブラウザで統合管理

WindowsだとputtyとかPoderosaとかTeraTermとかSSHクライアントソフトを利用してリモートのサーバにSSH接続することが多いです。
接続先のサーバがたくさんある場合には各ツールに接続先サーバのプロファイル情報を登録し、接続することになります。

これらのプロファイル情報はクライアントマシン内に保管されるので、別の端末から接続したいといった場合には別途接続設定を行う必要があるなど、管理に手間がかかります。

そこで、Web上でSSH接続情報を管理をし、複数サーバに対してSSH接続できるものがないかと探していたところ、GateOneというツールを見つけました。
GateOneはAGPLv3で公開されているOSSです。

http://liftoffsoftware.com/Products/GateOne
https://github.com/liftoff/GateOne/

GateOneを稼働させることで、複数のリモートサーバへのSSH接続を統合して管理できます。
接続先情報についてはGateOne内で管理することができるため、GateOneに繋げることさえできればリモートサーバへのSSH接続が実現できます。
Webブラウザで全て完結するのでクライアントソフトの導入なども必要ありません。

他のツールと比べてGateOneの面白いところは、鍵の管理ができたり、プラグインとして機能追加できたりするところです。
AWS上のEC2インスタンスSSH接続する際には標準で鍵認証の方式が採られていますが、GateOneでは鍵認証を使ってSSH接続も可能です。

導入方法

GateOneの公式サイトにてdebrpmのパッケージがそれぞれ公開されています。
このパッケージをインストールすれば簡単に導入できます。

以下、Ubuntu上にGateOneをインストールした例です。

必要なパッケージのダウンロード

gateoneとpython-tornadeの2つのパッケージが必要です。

$ wget https://github.com/downloads/liftoff/GateOne/gateone_1.1-1_all.deb 
$ wget https://github.com/downloads/liftoff/GateOne/python-tornado_2.4-1_all.deb 
パッケージインストール
$ sudo dpkg -i python-tornado_2.4-1_all.deb
$ sudo dpkg -i gateone_1.1-1_all.deb
設定確認

GateOneの設定は/opt/gateone/server.confで行います。
稼働するポートの設定等はここで行います。

gateoneサーバ起動
$ sudo /etc/init.d/gateone start

利用方法

gateoneサーバを起動するとデフォルトで443ポートで待受をするようになっています。
https://hostnameにアクセスします。
ここで接続先を入力して接続してみます。

ssh接続できました。

色付けもされます。
コピー&ペーストも有効です。
日本後も表示されます。
ただし、日本語入力はできません。

さらに別のサーバへのSSH接続も試してみます。
画面右端にある「+(New Terminal)」をクリックすると新規接続画面が開きます。
ここで別サーバへのSSH接続情報を入力すると接続可能です。

先に接続したサーバのターミナルに戻るには画面右端のメニューから「Grid View」をクリックしてターミナル一覧を表示し、操作したいターミナルを選択します。


Bookmark機能

毎回接続先情報を入力するのは面倒です。
よく接続するホストの情報はBookmarkとして保存しておくことができます。
Bookmarkには接続先ホスト名、SSHポート番号、名前、タグが設定できます。
接続先サーバの種類毎にタグで分類もできます。
台数が多くなると有効に活用できそうです。



ここで登録したBookmarkの情報は、Gate Oneが稼働しているサーバの
/opt/gateone/users/ANONYMOUS/bookmarks.jsonに記録されています。

過去の行動履歴

GateOneのターミナル上で行った作業は履歴が残っています。
ターミナルの下部のバーで過去何を行ったかをさかのぼって確認することができます。
また、LogViewerというツールもあり、過去のターミナルセッション毎の履歴情報を確認することができます。
この履歴情報は印刷用の形式で表示できたり、htmlファイルとして保存できたりと作業証跡の保存用途としても活用できそうです。

鍵の管理

鍵認証のSSH接続にも対応しています。
SSH PluginとしてSSH Identity Managerが標準で搭載されています。
ここでは、鍵の新規作成や鍵のアップロードができるようになっています。
登録した秘密鍵をもとに認証を行いSSH接続するといったこともできます。
AWSのEC2インスタンスのような鍵認証のサーバにもログインすることができます。
この鍵情報についてはGateOneサーバの/opt/gateone/users/ANONYMOUS/ssh以下に格納されるようになっています。
秘密鍵の管理には十分注意した上で利用しなければいけません。

ショートカットキー

GateOneはショートカットキーにも対応しています。

  • Shift+矢印: ターミナル切り替え
  • Ctl+Alt+N: 新規ターミナル作成
  • Ctl+Alt+W: ターミナル削除
  • Ctl+Alt+G: Grid View表示
プラグイン

その他プラグインとして、サーバのtopコマンド実行状況を常に画面に表示するようなプラグインがあったりします。

このようにただ単にSSH接続ターミナルを集約できるだけでなく、運用作業をするにあたって便利な機能があるので面白いツールじゃないでしょうか。
プラグインについては、簡単に作れるようになっているみたいなので機会があれば試してみようと思います。

ユーザ管理

ここまでANONYMOSユーザで作業を行いましたが、GateOneにはユーザ管理をする機能もあるようです。
server.confにはauth="none"となっている設定項目があり、pam、googleapiといった値が設定できるようです。
ただ、ここの使い方はいまいちよくわからなかったので今後調べてみようと思います。

まとめ

この手のWebブラウザSSH接続できるようにするツールはAjaxtermやShell in a Boxなどなどたくさんありますが、
GateOneはとても機能が豊富なツールだと思います。
Plugin開発もしやすそうなので、今後に期待です。
使ってみて感じたこととしては、簡単な運用作業とかであれば使えそうです。
ただ、ターミナルの切り替えがもたつくのでたくさんのターミナルを開いて作業するには少し不快感を感じるかもしれません。