CentOS 7でWEBブラウザからssh接続できる踏み台サーバ『KeyBox』を使ってみる

sshの踏み台サーバについて調べていたところ、ブラウザ経由でssh接続が行える『KeyBox』というツールを見かけたので、ちょっと試してみることにする。触ってみた感じ、接続の種類や機能はApache Guacamoleに比べて少ないのだが、Guacamoleはコンソールに表示される文字列を直接コピペできないのに対し、KeyBoxは行えるので、用途によってはありかなと思う。設定次第でLDAP認証も行え、二要素認証がデフォルトで設定可能なのも良い感じだ。ちょっと前にlsshを使って似たようなことをやらせてみたけど、あちらではsshで繋げないといけないし、良さげだ。

1.KeyBoxを動作させる

KeyBoxはJavaで書かれているので、まず以下のコマンドでOracle JDK 1.8をインストールしてやる。

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jdk-8u101-linux-x64.rpm
rpm -ihv jdk-8u101-linux-x64.rpm

 

JDKのインストール後、以下のコマンドでKeyBoxのソースファイルをダウンロードしてくる。
(ダウンロードしてくるバージョンが決め打ちになっているので、ちゃんと最新のバージョンをこちらで確認することを推奨)

wget https://github.com/skavanagh/KeyBox/releases/download/v2.89.00/keybox-jetty-v2.89_00.tar.gz
tar xzvf keybox-jetty-v2.89_00.tar.gz

 

展開完了後、以下のコマンドでKeyBoxの起動をする。

cd KeyBox-jetty
./startKeyBox.sh
[root@BS-PUB-CENT7-01 KeyBox-jetty]# ./startKeyBox.sh
2017-04-08 18:51:34.535:INFO::main: Logging initialized @1213ms to org.eclipse.jetty.util.log.StdErrLog
2017-04-08 18:51:35.090:INFO:oejs.Server:main: jetty-9.4.2.v20170220
2017-04-08 18:51:35.161:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///root/KeyBox-jetty/jetty/webapps/] at interval 1
2017-04-08 18:51:38.670:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=3005ms
2017-04-08 18:51:39.405:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0
2017-04-08 18:51:39.405:INFO:oejs.session:main: No SessionScavenger set, using defaults
2017-04-08 18:51:39.406:INFO:oejs.session:main: Scavenging every 660000ms
Please enter database password:
Please confirm database password:
Setting KeyBox SSH public/private key pair
Finger print: c8:69:89:76:89:b8:51:c0:c5:d3:d0:7b:7d:cb:34:d1
KeyBox Generated Global Public Key:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCm/hYrUS/jyjNm9ItPNwW1lnfgSuTw0vW7M2hduDbKCozgTIxKLdRE+stbuywhzZhu2poXJIuXcBFWxAaA78WT2y4nFFDNm/NCeeWEksatc8CK1y1MHmhlkc1vk69su4NIlNpY/hlGKH6Xmri/0hl6pIwGcT6QDL0a8CHAIDbbTTbGfDvla3onXys2z+UjNVH9yktRJg2VWO9dIAHHIG3i+WtjEDgg1ljxtCbYNJPZ1ij3EqBw0C82SV7TYKfoJzDUZjJwzWZrM4fOIdA+TXx2rmoE3/twTEhMZkpysgtEuYibdvbkoHbSTExBz6rqunFGm8QPoyOOiOidpTsqJ3qj keybox@global_key
2017-04-08 18:52:09.499:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@a67c67e{/,file:///root/KeyBox-jetty/jetty/keybox/,AVAILABLE}{/root/KeyBox-jetty/jetty/keybox}
2017-04-08 18:52:09.524:INFO:oejus.SslContextFactory:main: x509=X509@5dbf5634(jetty,h=[],w=[]) for SslContextFactory@1948ea69(file:///root/KeyBox-jetty/jetty/etc/keystore,file:///root/KeyBox-jetty/jetty/etc/keystore)
2017-04-08 18:52:09.560:INFO:oejs.AbstractConnector:main: Started ServerConnector@3015db78{SSL,[ssl, http/1.1]}{0.0.0.0:8443}
2017-04-08 18:52:09.561:INFO:oejs.Server:main: Started @36240ms

 

これで、KeyBoxのサービスが起動した。

Sponsored Links

2.ブラウザからアクセスする

サービスが起動したので、ブラウザからアクセスしてみよう。「https://IPアドレスorホスト名:8443/」にアクセスすると、以下のような画面が表示される。
ログインは初期設定されているID/PWである「admin/changeme」でログインできる。ログイン後、ワンタイムパスワードの設定用QRコードが出てくるが、今回は割愛。

 

ログイン後の画面はこんな感じ。

 

3.sshでログインしてみる

さて、それでは実際にKeyBoxから別のサーバにssh接続してみよう。まず最初に、(パスワード認証も可能だが)ssh接続で使用する鍵ファイルを作成しよう。[Manage] > [Manage SSH Keys]を選択し、鍵ファイルを新規で作成する。この時、鍵ファイルが流出してもすぐには使えないよう、パスフレーズの設定が必須になっている。

 

秘密鍵ファイルを作成したら、自動的にダウンロードされるので適切な場所に保存しておくか、要らなければ削除してしまうといいだろう。
公開鍵はログイン対象となるサーバを追加時に自動的に配置されるので、今の時点ではダウンロードできなくても問題ではない。(このため、KeyBoxが稼働しているサーバからは、システム追加時にパスワード認証ができないと駄目かも)

次にシステムを追加する。上部メニューから[Manage] > [Systems]を選択し、[Add System]から新規で接続先となるサーバの情報を記述、追加する。
追加時に公開鍵配置のためにsshのログインパスワードを求められるので、入力して接続させる。

 

ログイン先のシステムを追加したら、実際にssh接続してみよう。
上部メニューから[Secure Shell] > [Composite SSH Terminals]を選択してやる。

 

接続先のホストを選択し、[Create SSH Terminals]をクリックする。

 

接続後の画面はこんな感じ。ターミナルウィンドウのサイズは可変なので、ある程度自由に大きさを変えられる。

 

同様のシステムであるApache Guacamoleと比べるとsshにしか利用できないという点はあるのだが、それでもなかなかおもしろい感じ。
やはりブラウザからの操作なので手元のターミナルからの操作に比べるとやりにくいところは多々あるのだが、踏み台としては問題なさそうだ。

 

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*