EC2インスタンスが増えてくると、sshのconfigを設定するのが面倒くさくなりますよね!
AWSのアカウントが増えたりなんかしたらもうやってらんない。
そんなダルイ状況を解決するためにスクリプト作りました。
EC2インスタンスログインを補助します。
github: https://github.com/wgkoro/EC2-Login-Helper
スクリプトを実行すると、立ち上がっているインスタンスを下記のように一覧表示します。
識別番号(連番), インスタンス名, Public DNS, インスタンスイメージID, インスタンスID, sshプライベートキー名
————————————————————
0: hoge1, ec2-xxxxxxxxxx.compute.amazonaws.com, ami-xxxx, i-xxxx, private_key.pem
————————————————————
1: fugafuga, ec2-xxxxxxxxxx.compute.amazonaws.com, ami-xxxx, i-xxxx, private_key.pem
————————————————————
この後、接続したいインスタンスの識別番号を打ち込むよう促されます。
上表の先頭にある番号を打ち込むと、そのインスタンスへSSH接続します。
下記は対応済。
・AWSマルチアカウント
・ログインユーザー個別指定
・接続ポート個別指定
・接続リージョン個別指定
必要環境 ==========
・Python 2.6かそれ以降
・botoパッケージ (easy_install boto か pip install boto でインストール可能)
初期設定 ==========
スクリプトを開き、下記部分を編集して下さい。
[py]
# Change these value ============================
SSH_DIR = ‘/Users/xxxxx/.ssh/’
DEFAULT_USER = ‘ec2-user’
DEFAULT_PORT = 22
AWS_DATA = {
‘default’ : {
‘access_key’ : ”,
‘secret_key’ : ”,
‘region’ : ‘t’,
},
}
# ==============================================
[/py]
SSH_DIR:
SSHのプライベートキーが格納されているディレクトリ
DEFAULT_USER:
ユーザー指定が無い時に使うユーザー名
DEFAULT_PORT:
ポート指定が無い時に使うポート番号
AWS_DATA:
AWSのアクセスキー、シークレットキー、デフォルトで接続するリージョンIDを指定。
リージョンID = 辞書’REGION’のキー。東京なら’t’を指定。
[py]
REGION = {
‘t’ : ‘ap-northeast-1’, # TOKYO
‘s’ : ‘ap-southeast-1’, # SINGAPORE
‘v’ : ‘us-east-1’, # US East(Virginia)
‘o’ : ‘us-west-2’, # US West(Oregon)
‘n’ : ‘us-west-1’, # US West(N. California)
‘e’ : ‘eu-west-1’, # EU West(Ireland)
‘sa’ : ‘sa-east-1’, # S. America(Sao Paulo)
}
[/py]
‘default’はアカウント指定が無い場合に呼び出されます。
defaultのaccess_key, secret_keyが空の場合、
環境変数AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEYから自動で読み出されます。
複数のAWSアカウントを設定する場合は
[py]
AWS_DATA = {
‘default’ : {
‘access_key’ : ”,
‘secret_key’ : ”,
‘region’ : ‘t’,
},
‘account_2’ : {
‘access_key’ : ‘ACCESSKEYACCESSKEYACCESSKEY’,
‘secret_key’ : ‘SECRETKEYSECRETKEYSECRETKEYSECRETKEYSECRETKEY’,
‘region’ : ‘s’,
},
‘account_3’ : {
‘access_key’ : ‘ACCESSKEYACCESSKEYACCESSKEY’,
‘secret_key’ : ‘SECRETKEYSECRETKEYSECRETKEYSECRETKEYSECRETKEY’,
‘region’ : ‘t’,
},
}
[/py]
のようにして下さい。
※AWS_DATAのキーは好きな文字列指定できます
使い方 ==========
基本は下記でOK。
$ python ec2loginhelper.py
AWSの別アカウントを指定したい場合は、第一引数にAWS_DATAのキーを指定して下さい。
$ python ec2loginhelper.py account_2
ポート番号の変更は-pオプションで。
$ python ec2loginhelper.py -p 1234
リージョンの変更は-rオプションで。
$ python ec2loginhelper.py account_3 -r s
↑アカウント’account_3’のシンガポールリージョンへ接続
おまけ ==========
このスクリプトをec2.pyとか適当に短いファイル名にして、
ローカルのパスが通っている場所へ放り込むと、
どこからでもec2.pyで接続できるので幸せになれるかもです。