ec2sshが便利だったので使ってみた

2021/01/10に公開

ec2sshが便利だったので使ってみた

転職してから仕事でEC2に触れることが以前よりも多くなりました。
sshする機会が増えたのですが、インスタンスの増加に伴いEC2のホスト名をconfigファイルに追記するのが割と面倒になってきました。

まぁ増えるたびにconfig追加すれば良いんじゃん、って言ったらそうなのですがコンソール開いてコピペしてconfigファイルに貼り付けるみたいな作業をなるべくしたくないなぁとおもっている時にec2sshなるものを見つけました。

https://github.com/mirakui/ec2ssh

ec2sshはEC2のssh_configマネージャーです。
ec2sshコマンドを利用するとインスタンスの名前タグを取得してホスト名にパブリックDNSを設定してくれます。

使い方

1. Nameタグをインスタンスに設定する
分かりやすい名前をインスタンスのNameタグに設定しましょう。

2. ~/.aws/credentialsに記載する

# ~/.aws/credentials

[default]
aws_access_key_id=...
aws_secret_access_key=...

[myprofile]
aws_access_key_id=...
aws_secret_access_key=...

3. ec2sshをインストールします

$ gem install ec2ssh

4. 初期化します

$ ec2ssh init

5. 生成された.ec2sshを編集します

$ vim ~/.ec2ssh
---

path '/Users/koya.suzuki/.ssh/config'
profiles 'default' # ここはcredentialsに追加したユーザーを自由に設定できます
regions ENV['AWS_REGION'] || ENV['AMAZON_REGION'] || ENV['AWS_DEFAULT_REGION'] || 'ap-northeast-1'
# Enable regions as you like
# regions *%w(ap-northeast-1 ap-southeast-1 ap-southeast-2 eu-west-1 sa-east-1 us-east-1 us-west-1 us-west-2)

# You can use methods of AWS::EC2::Instance.
# See http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/EC2/Instance.html
host_line <<END
Host <%= tag('Name') %>
  user admin
  HostName <%= public_dns_name == "" ? private_ip_address : public_dns_name %>
  identityfile ~/.ssh/id_rsa # 自分の利用しているpemを設定してください
  ForwardAgent yes
END

6. ec2ssh update を実行します
.ssh/configファイルにインスタンスのタグ名でhost名が記載されているはずです。

$ ec2ssh update
### EC2SSH BEGIN ###
# Generated by ec2ssh http://github.com/mirakui/ec2ssh
# DO NOT edit this block!
# Updated xxx
# section: default
Host test-ec2-ssh01
  user admin
  HostName ec2-xxx.xxx.xxx.xxx.amazonaws.com
  identityfile ~/.ssh/id_rsa
  ForwardAgent yes
Host test-ec2-ssh02
  user admin
  HostName ec2-xxx.xxx.xxx.xxx.amazonaws.com
  identityfile ~/.ssh/id_rsa
  ForwardAgent yes
・
・
### EC2SSH END ###

Updated /Users/XXXXX/.ssh/config

7. host名を確認してsshしてみましょう

$ ssh test-ec2-ssh01
The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (198-51-100-1)' can't be established.
ECDSA key fingerprint is l4UB/neBad9tvkgJf1QZWxheQmR59WgrgzEimCG6kZY.
Are you sure you want to continue connecting (yes/no)?
・
・

sshできれば終了です!

まとめ

ec2sshを利用することによってサーバーを増やしてsshするまでの時間を減らすことが出来ました。
小さいですが人がやらなくても良い作業はなるべくこのような便利ツールを使って無駄を省いていけたらと思います。

Discussion