みんなが大好きなクラウドホスティングサービスの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という名前にしました。
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もお待ちしております。