EC2インスタンスへセキュアにログインできるawsshコマンド作った
2019-10-18
tl; dr
- https://github.com/youyo/awssh
- security groupでsshポート閉じていい
- 公開鍵を事前に登録しておかなくていい
- インスタンスのIP知らなくていい
これは何?
ec2-instance-connect と ssm session-start を組み合わせたものです。
https://github.com/youyo/awssh

Session Managerを使用することによりSSHトラフィックをトンネリングできるようになりましたが, それに加えて ec2-instance-connect send-ssh-public-key で公開鍵の登録すればさらにいいじゃん!ってやつです。
インストール
homebrewでインストール可能です。
$ brew tap youyo/tap
$ brew install awssh
これとは別に session-manager-plugin コマンドも必要です。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html
使い方
基本的には awssh を実行すればokです。

その他オプションについてはExamplesを見てください。
その他
久しぶりにGo書いたらGoReleaser最高だなってことに気付きました。
あと session-manager-plugin コマンドは実装が謎すぎてGoに移植できませんでした。なので外部コマンドとして実行しています。(API叩いて得られたTokenとかパラメーターをどう扱っていいのかがわからなかった。詳しい人いたら教えて欲しい。)
いい加減テストもちゃんと書きましょう(頑張る)