EC2インスタンスへセキュアにログインできるawsshコマンド作った
2019-10-18

tl; dr

  • https://github.com/youyo/awssh
  • security groupでsshポート閉じていい
  • 公開鍵を事前に登録しておかなくていい
  • インスタンスのIP知らなくていい

これは何?

ec2-instance-connectssm session-start を組み合わせたものです。

https://github.com/youyo/awssh

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です。

demo

その他オプションについてはExamplesを見てください。

その他

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