長生村本郷Engineers'Blog

千葉県長生村本郷育ちのエンジニアが書いているブログ

EC2 Instance Connect API で ssh ログインできるインタラクティブ cli tool "omssh" を作ってみました。

概要

oreno-mssh、またの名を omssh という AWS EC2 Instance Connect API を利用した ssh ログインツールを作成しました。

View post on imgur.com
imgur.com

作ろうと思った経緯

以前 EC2 Instance Connect API の登場により、EC2 Instance ID 指定で ssh ログインできる様になりました。

これにより、ssh ログイン接続するメンバーに秘密鍵を渡す、公開鍵を登録する等の作業が不要となりました。

kenzo0107.hatenablog.com

mssh を使用した場合、以下の様なコマンドで ssh ログインできます。

// Amazon Linux への ssh 
mssh <EC2 Instance ID> --profile <profile>

// Ubuntu
mssh ubuntu@<EC2 Instance ID> --profile <profile>

mssh を利用するには <EC2 Instance ID> 情報が必要で、毎回 Instance ID を調べる手間がありました。

もちろん踏み台サーバであれば、そうそう再起動され Instance ID が変更されることはないのでメモっておけば良いのでしょうが、 数が多くなると、管理が大変です。

その手間を fuzzyfinderインタラクティブに解決しようと思いました。

使用方法

README.md にもありますが、以下ステップでインストールできます。

$ git clone https://github.com/kenzo0107/omssh
$ cd omssh
$ make build && make install

今後

現在、EC2 Instance Connect を利用した運用に切り替えきれないところがあります。

理由は、EC2 インスタンスを Public Subnet に配置していないと EC2 Instance Connect API が利用できない為、踏み台までは EC2 Instance Connect API を利用し ssh ログインできたけど、その先は、秘密鍵が必要になる為です。

f:id:kenzo0107:20190804180237p:plain

おそらく近々 Private Subnet でも EC2 Instance Connect が利用できる様になるのでは?と期待しています。

そうなれば、踏み台にも omssh を置いて、鍵を意識せず、 IAM の権限だけで、 ssh 権限を管理できる様な世界が実現できます。

AWS サポートに願いを伝えておきます♪

改訂2版 みんなのGo言語

改訂2版 みんなのGo言語