PythonでEC2用SSHログイン補助スクリプト作った (EC2 SSH LoginHelper)

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で接続できるので幸せになれるかもです。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください