age でシークレットファイルを暗号化する(SSH 鍵を流用)
age はシンプルなファイル暗号化ツール。既存の SSH 公開鍵を受信者として使え、リポジトリに暗号化済みシークレットを置ける。
いつ使うか
- dotfiles や NixOS 設定などで、シークレットを Git 管理したいがクラウドのシークレットストアまでは要らないとき。
手順
sh
# SSH 公開鍵で暗号化
age -R ~/.ssh/id_ed25519.pub -o secrets.env.age secrets.env
# 秘密鍵で復号
age -d -i ~/.ssh/id_ed25519 secrets.env.age > secrets.env
# GitHub に登録済みの公開鍵を受信者にする例
curl -s https://github.com/<user>.keys | age -R - -o out.age in.txtsopsと組み合わせると YAML/JSON の値だけ暗号化でき、エディタで編集しやすい。- NixOS では agenix / sops-nix で age を使ったシークレット管理ができる(@Comamoca_ はこれで運用)。
注意点
- 復号した平文ファイルを
.gitignoreし忘れない。 - 鍵を失うと復号できない。受信者を複数(バックアップ鍵)指定しておく。