2010-12-05
Amazon EC2インスタンスに簡単にSSHできるようになるツールec2sshを公開しました
みんなが大好きなクラウドホスティングサービスのAmazon EC2ですが、インスタンスをバンバン立てたり落としたりしていると、ホスト名の管理が面倒になってきますよね。たとえば「さっき立てたインスタンスにSSHしたい!」と思ったら、consoleをひらいて、「ec2-xxx-xxx-xxx-xxx.compute.us-west-1.compute.amazonaws.com」なPublicDNSをターミナルにコピペして…みたいな面倒な事をやってしまいがちです。
これを避けるためには、~/.ssh/configをマメに更新したりするといいのですが、これはなかなか面倒な作業です。インスタンスは一旦StopしてRunし直すと、IPが変わってしまいますからね。
そこでec2sshの登場です
ec2sshは、インスタンスのNameタグからホスト名を生成して、~/.ssh/configに書きこむツールです。使い方を説明します。
1. インスタンスにNameタグを付ける
AWS Consoleなどを使って、インスタンスにNameタグを付けます。ここで付けたタグがホスト名に使われます。
ここではapp-server-1という名前にしました。
2. ec2sshのインストール
ec2sshはrubygemsからインストールできます。
gem install ec2ssh
3. 環境変数を設定
環境変数にAWSのアクセスキーを設定します。
export AMAZON_ACCESS_KEY_ID="..." export AMAZON_SECRET_ACCESS_KEY="..."
ちなみに、アクセスキーは以下のURLから確認できます。
https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=access-key
ここ。
4. init と update
※以下のコマンドは ~/.ssh/config に記述を追加します。既存の設定は破壊しないはずですが、念の為に~/.ssh/config のバックアップをしておくことをおすすめします。
まず init をします。
ec2ssh init
これで、~/.ssh/config の末尾に以下のコメント行が追加されます。
### EC2SSH BEGIN ### # Generated by ec2ssh http://github.com/mirakui/ec2ssh # DO NOT edit this block! # Updated Sun Dec 05 00:00:14 +0900 2010 ### EC2SSH END ###
次に update をします。
ec2ssh update
これで先程の BEGIN と END の間に Host の設定が追加されます。
### EC2SSH BEGIN ### # Generated by ec2ssh http://github.com/mirakui/ec2ssh # DO NOT edit this block! # Updated Sun Dec 05 00:00:14 +0900 2010 Host app-server-1.ap-southeast-1 HostName ec2-xxx-xxx-xxx-xxx.ap-southeast-1.compute.amazonaws.com ### EC2SSH END ###
これで、
ssh app-server-1.ap-southeast-1
みたいな感じでsshできます。zshならappあたりまで打ってtabキーで補完できちゃうので便利です。
IPが変わったり、新しいインスタンスを追加したりしたら ec2ssh update で最新の状態に更新できます。
また、要らなくなったら ec2ssh remove すれば、追加した Host 設定を消して元の .ssh/config に戻ります。
ソースコード
githubに上げてあります。
https://github.com/mirakui/ec2ssh
要望はgithubでお願いします! pull requestもお待ちしております。
- 36 http://twitter.com/
- 27 http://b.hatena.ne.jp/hotentry
- 26 http://b.hatena.ne.jp/
- 19 http://b.hatena.ne.jp/hotentry/it
- 19 http://reader.livedoor.com/reader/
- 14 http://b.hatena.ne.jp/entrylist/it
- 14 http://longurl.org
- 8 http://www.ig.gmodules.com/gadgets/ifr?exp_rpc_js=1&exp_track_js=1&url=http://www.hatena.ne.jp/tools/gadget/bookmark/bookmark_gadget.xml&container=ig&view=default&lang=ja&country=JP&v=5d6b571248635d85&parent=http://www.google.co.jp&libs=core
- 7 http://hootsuite.com/dashboard
- 7 http://www.wikiwix.com/