EC2インスタンスの秘密鍵の管理から開放される ssos (ssh-setup-over-ssm) をリリースした

EC2インスタンスに入りたい時ってたまにないですか?

EC2インスタンスssh秘密鍵の管理をどうしよう、とか EC2インスタンスのユーザの管理をどうしよう、とか悩みますよね。

今回リリースした、ssos (ssh-setup-over-ssm) を使えば EC2インスタンスを使いたい人が、自分でセットアップすることが出来るようになります。

このツールを使うに当たって必要なのは AWSのクレデンシャルのみです。EC2インスタンス秘密鍵も必要ありません。 Systems Manager経由でSend Commandできるインスタンスであれば sshでログイン出来るようになります。

今回作ったssosのリポジトリはこちらです。

github.com

はじめに

対象のEC2インスタンスでターミナルを使うだけなら Systems Managerを使えば、確かに、sshを使わなくても ターミナルを使うことは出来ます。

しかし、scpをしたい、となった場合はどうでしょう。 ssh鍵を使わないと出来ないです(はずです)。 加えて通常ssh公開鍵を置くには、EC2の秘密鍵が必要です。 また、EC2の秘密鍵を使う場合、その秘密鍵を管理する方法に悩まされることになります。

今回リリースした、ssosでは、秘密鍵の管理に苦しまされることもなく EC2インスタンスを使いたい人が、自分でsshの公開鍵を配置して 自分でsshの設定をすることが出来るようになります。

使うにあたって必要なもの

必要なものは以下のものです。 ログインしたいEC2の秘密鍵は必要ありません。

  • ssosのバイナリ
  • awsのクレデンシャル
  • Systems ManagerのSend Commandの対象に出来るsshログインしたいEC2インスタンス

ssosで出来ること

出来ることは至ってシンプルです。現状、以下の2つです。

  • ユーザの作成
  • SSHの公開鍵の設定

使い方は以下の通りです。

# ユーザの作成
ssos create-user -u masaya -i i-xxxxxxxxxxxxxxxx

# ssh公開鍵の配置
ssos add-ssh-key -u masaya -i i-xxxxxxxxxxxxxxxx -k ~/.ssh/id_rsa.pub

インストール方法

インストールはGithub Releaseにリリースしているのでそちらからダウンロードして パスに入れてください。

# MacOS 
curl -L https://github.com/wreulicke/ssos/releases/download/v0.0.3/ssos_0.0.3_darwin_amd64 -o /usr/local/bin/ssos

# Linux
curl -L https://github.com/wreulicke/ssos/releases/download/v0.0.3/ssos_0.0.3_linux_amd64 -o /usr/local/bin/ssos

# Windows
curl -L https://github.com/wreulicke/ssos/releases/download/v0.0.3/ssos_0.0.3_windows_amd64.exe -o <path-directory>/ssos.exe

まとめ

もともと、ssh-over-ssm というbashスクリプトがあって 今回リリースしたssosのアイデアのほとんどはこれを参考にしています。

前々職や前職で悩まされていたEC2の秘密鍵の共有方法や EC2の公開鍵のセットアップの属人性を解決したいと思い、作りました。

また、今回作ったssosではAmazon Linux2をベースにprovisioning 方法を考えています。 そのため、他の環境では動かないかもしれません。

終わり。

追記: この記事書いてるときに見つけたけど 作ったユーザでsudoしようとしたら、パスワード要求されて泣いてる。 パスワードなしでsudo使えるようにユーザを作るようにしようと思います。

v0.0.2で対応しました。

Docker/KubernetesにおけるNode.js: ヒープサイズがcgroupのlimitを見て決められるようになるのは v12.7.0から

仕事で気になって調べたので書いておきます。

Node.jsは v12.7.0以降じゃないと
cgroupのmemory limitを見てくれません。
つまり、v12.7.0より前のバージョンのNode.jsでは、ヒープメモリの容量を設定するオプション `--max-old-space-size`を使う必要があります。

cgroupのmemory limitを見るようになったNodeのPRとしては、これです。
github.com

ちなみに、cgroupのlimitはKubernetesのresource limitsで
dockerとしては --memoryというオプションで設定可能です。

Docker/KubernetesにおけるNode.js: ヒープサイズがcgroupを見て決められるようになるのは v12.7.0から

仕事で気になって調べたので書いておきます。

Node.jsは v12.7.0以降じゃないと
cgroupのmemory limitを見てくれません。
つまり、v12.7.0より前のバージョンのNode.jsでは、ヒープメモリの容量を設定するオプション `--max-old-space-size`を使う必要があります。

cgroupのmemory limitを見るようになったNodeのPRとしては、これです。
github.com

ちなみに、cgroupのlimitはKubernetesのresource limitsで
dockerとしては --memoryというオプションで設定可能です。