はじめに
こんにちは。KMC2回生のtyageです。
京都もほんとに寒くなってきて鍋が捗りますね。簡単だし美味しいあったまるし、最高ですね。
この記事はKMCアドベントカレンダー2013の17日目の記事で、 昨日は1回生のnona65537君によるSSH の二段階認証についてでした。
今日はGoogle ChromeというSSHクライアントの紹介なのですが、12日間続いたKMCアドベントカレンダーのサブプロジェクトであるSSHアドベントカレンダーもこれで最後になります。
最後がこれでいいのか?とも思うのですが、今までの内容がハードだったという方に向けて優しい内容となっておりますので、安心して御覧ください。
定番SSHクライアント「Google Chrome」
Google Chrome(もしくはChromium)と聞いて「あっ、SSHクライアントのことか!」と思われた方には少し物足りないかもしれないです。 ご了承下さい。
Google Chromeは少し特殊なクライアントで、SSHする方法が複数存在します。
1つはwebページから行う方法で、もう1つはChrome Extensionを使用する方法です。
webページから行う方法としてはGate Oneとかがあるようです。詳しくはwikipediaによくまとまっています。
最近はOpenRISKのJavaScriptエミュレータからSSHができるというのも見かけました。
webページから行う場合、SSHを実際に行うプロキシサーバーに対してWebSocketやXHRで通信することが一般的で、クライアント側でSSH接続をするわけではありません。 そのため「localhostに接続できない」「通信をする際に、通信先以外のサーバーを経由する必要がある」といった問題がでてきます。
しかし、クライアント側で通信を行うChrome Extensionを利用することでそのような問題を解決することができます。
Secure Shell
SSHクライアントのChrome Extensionはいくつかあるようですが、本家Chromiumで開発されている「Secure Shell」を使ってみましょう。
実に殺風景な画面が見えると思います。
設定としてはユーザー名・ホスト名・ポート番号・Identity file・SSH Argumentsの他に、relay optionsというものがあります。
これは、HTTP経由のSSHリレーサーバーのオプションのようで、例えば「--config=google」とするとGoogleのSSHリレーサーバー(spdy-proxy.ext.google.com:8022)を経由できるということらしいのですが、あまり詳しくないので割愛します。
リレーサーバーを使用しない場合、SSH通信はCとC++で書かれたSSHのNaClラッパーを通じて行われます。
これらのコードはgitwebで管理されており、developer guideを参考にすれば、中身を書き換えてビルドすることができそうです。
試しにどこかのサーバーにSSH接続してみましょう。
秘密鍵を設定のIdentityに渡すことで鍵認証を行うことがでます。
これはHTML5のファイルシステムを利用しているので、Chrome同士で鍵を共有する機能を作ることもできると思うのですが、まだそこまでは出来てないように思います。(できたとしてもGoogle Driveに鍵を置くのは怖いですね。)
さて、うまく接続できたでしょうか?
同じ要領でlocalhostにも接続ができるため、Chromeをターミナル代わりに使うことも出来ます。
便利ですね!
Google Chromeを使って自分だけのSSHクライアントを作ろう!
最後に、せっかくなので、Secure Shellを自分用に置き換えてみましょう。
Chrome ExtensionのディレクトリはWindows7だと「[ユーザーディレクトリ]\AppData\Local\Google\Chrome\User Data\Default\Extensions」、Macだと「[ユーザーディレクトリ]/Library/Application Support/Google/Chrome/Default/Extensions」にあるみたいです。 詳しくはここを参照。
その中にある、Secure ShellのID(pnhechapfaindjhompbnflcldabbghjo)のディレクトリがSecure Shellのディレクトリになっています。 それを適当なところにコピーして編集していきましょう。
編集したら、「chrome://extensions/」に移動して「デベロッパーモード」を選択し、「パッケージ化されていない拡張機能を読み込む」でディレクトリごと選択すれば使うことができます。
このあたりはChrome Extensionの作成手順と同様です。
試しに、背景が10秒毎に切り替わるSSHクライアントを作成してみましょう。
このようなJavaScriptファイルを追加して、「html/nassh.html」で読み込み、仕上げに「manifest.json」のpermissionsに「https://gist.github.com/」を追加してやることでうまく動作すると思います。
これで日々のストレスの元である監視作業も癒しになりますね。
おわりに
今回は時間がなかったので、背景画像を変えるだけでしたが、通信内容を見て、何か行うということも可能です。
(nassh.CommandInstance.prototype.onPluginMessage_やnassh.CommandInstance.prototype.sendToPlugin_を書き換えるとよさそう)
手軽にできるので、自分だけのSSHクライアントを作ってみてはいかがでしょうか。
明日はcosさんでhttpsだそうです。