pecoとEC2 APIを使って踏み台経由のSSHログインを楽にする

投稿者: | 2018/04/13

ほんのちょっとしたbashコマンドですが、社内で評判が良かったので。

おそらくみんなが抱えているであろう悩み

  • Auto Scalingや作り直しなどでEC2インスタンスがコロコロ入れ替わるのでホスト名を覚えきれない・うろ覚え
  • EC2インスタンスにSSHログインしようとしてもホスト名が思い出せないので毎回マネジメントコンソールでNameタグかプライベートIPアドレスを調べる1

こんな感じにします。

VPC内のEC2インスタンス一覧を表示して選択したものにSSHログインできるようにしてみます。

ec2-ssh.gif

解決手順

踏み台サーバとなるEC2インスタンスのIAMロールは ec2:DescribeInstances の権限が必要なので付与させます。

以下は踏み台サーバにログイン後に作業します。

peco をインストールします。pecoとはインタラクティブにフィルタをかけることができるコマンドラインツールです。自分でビルドしてインストールもできますが、今回はリリースページからバイナリをダウンロードして /usr/local/bin/peco として配置しておきます。

aws cliを使うのでインストールしていなければ入れておきましょう。

jqも使うので入れておきます。

/etc/bashrc に次のような関数を追記します。

ログインを試す

踏み台サーバにログイン後、ec2-ssh と打ちましょう。
ログイン可能(=起動している)Linuxサーバの一覧がでてきます。
インクリメンタルサーチで単語を入力するとマッチしたEC2インスタンスが絞り込まれていきますので、SSHしたいホストをEnterで選択すると接続に入ります。
絞り込みは完全一致ではなくて、単語レベルで可能です。スペースを入れることでAND検索ができます。

最後に

ちょっとした工夫で開発者が使いやすくなるので日頃からどんどん工夫していくようにしていきたいですね。

  1. NameタグをRoute53のPrivate DNSに登録しているので、Nameタグに書かれているホスト名でSSHログインできるように仕組みをいれています []

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*