2011年08月30日

SSH Worker-1.0: Support Gateway & Terminal

前回の記事で紹介した複数のSSHサーバに同時・並列にコマンドを実行するSSH Workerですが1.0と呼べそうなところまで作ってみましたが、今日は追加機能の紹介です(誰も使ってないと思いますが・・・)。

大きな変更点は次の通りです。

 1)SSHゲートウェイ対応
 2)ターミナル対応

基本的な使い方は前回の記事を見て下さいね。

ダウンロード


まず、こちらのURLから1.0版のzipファイルをダウンロードします。

 SSH Worker - Download page

58

zipファイルを解凍すると次のような構成になっています。

36

binディレクトリの中身を見ると、exeファイルとshファイルがあります。

40

Windowsの方はexeを、Linux系の方はshを実行して下さい。

すると、SSH Workerが起動します。

59

起動すると画面左側にあるツリー・ペインにホストが表示されますが、これはserversディレクトリ(フォルダ)内にあるhosts.txtを読み込んでいます(ファイルが無ければ何も表示されません)。
もし、普段良く使うホスト定義ファイルがあればservers/hosts.txtとして保存しておくと便利です。


SSH Gateway


Gateway(ゲートウェイ)機能とは同一ネットワーク上には存在せず他のSSHサーバ経由でないとSSHアクセス出来ないホストへ接続する為の機能です。

23

この図でいうとHost Bが直接にはSSH接続できないホストです。
このような場合、Host Aからポート転送してHost Bに接続しますが、SSH Workerでは2つの方法を準備しています。一つはGatewayPortsによる転送です。
これは踏み台となるHost AのSSHサーバでGatewayPorts機能が有効になっていれば利用出来ます。
有効になっているかどうかはSSHサーバの設定ファイル(sshd_config)を確認すると分かります。

[/etc/ssh/sshd_config]
#GatewayPorts no

通常はコメントアウト又は”no”となっているはずです。
(つまり使えない事が多いです)
もし使える場合にはホスト定義ファイルに次のように記述します。

#Region, Group, Type, Host, User, Password, Encoding, Nickname, Gateway 
Region1, Group1, Type A, Host A:22, user, password, UTF8, Host A(GW),
Region1, Group1, Type B, 192.168.0.1:22, user, password, UTF8, Host B, gwp:Host A:8888

3行目がポイントで、Gatewayパラメータに相当する列の値として”gwp:Host A:8888”が設定されています。
これは、GatewayPortsを使ってHost Aの8888番ポートをHost B(192.168.0.1)に転送する、という意味になります(192.168.0.1=Host Bの前提。Host AからHost Bの名前解決が出来ればIPアドレスでなくても良い)。
※ゲートウェイとなるホストはホスト定義ファイルに記載しておく必要があります。
※:8888は省略可。その場合はランダムにポートを使います。

以上でGatewayPortsによる接続が可能になります。

次にOpenSSHクライアントによるポート転送です。これは先程の”
gwp:Host A:8888"を"cmd:Host A:8888"とします。
するとHost A上で次のコマンドを実行し、ポート転送を有効にします。

ssh -g -L8888:localhost:22 user@Host B

こちらはGatewayPorts機能が無効になっているホスト上でも利用できますが、OpenSSHクライアントのコマンドに依存してしまいます。


Terminal(対話的ターミナル)


自分で使っているとやっぱり対話的なターミナルが無いと不便なんですよね。ということで追加しました。
ターミナルはホスト・ツリー上のホスト・アイコンを右クリックして表示されるメニューから起動します。

26

ターミナルを選択するとターミナル画面が表示され対話的なコマンド(vi、topなど)が実行出来ます。

16

ちなみにSSHコアは全てorion-ssh2(旧Ganymede)を使っていますが、ターミナルGUIだけはJCTermのソースに含まれるJCTermSwingクラスを利用しました。
(残念な点としてこのターミナルにはスクロールとコピー機能は含まれていません)


その他 改善点


1)サマリーの表示
ホスト・ツリー上の空白(スペース)部分で右クリックすると表示されるメニューから”サマリー”を選択すると現在接続中のホスト一覧が確認出来ます。

53

01

これでコマンドを一括実行する前に意図しないホストに接続していないか確認出来ます。

2)ファイルからコマンド実行する際にダイアログを表示
前回、複数のコマンドを記載したファイルをSSHコンソール上で右クリックして選択するか、コンソール上にドラッグ&ドロップすると一括で複数のコマンドを実行出来ると紹介しました。

45

バージョン1.0からは実行前に確認ダイアログが表示されます。

26


以上です。 もしバグがあればコメント下さい!


ゲームセンターCX DVD-BOX
ゲームセンターCX DVD-BOX
posted with amazlet at 11.08.30
ハピネット・ピクチャーズ (2005-12-23)
売り上げランキング: 1441


僕が2ちゃんねるを捨てた理由 (扶桑社新書 54)
ひろゆき 
扶桑社 
売り上げランキング: 21440

Posted by netbuffalo at 18:55│TrackBack(0) Java | ネットワーク


この記事へのトラックバックURL