ターミナルがダサいとモテない。yadmとgit-cryptの連携で暗号化

Photo by Markus Spiske on Unsplash
dotfiles管理と暗号化の組み合わせしてますか?
encryptってunsplashに入れたらマトリクスみたいな・・・😅
恵比寿でIT企業をやっているとモテると聞いて創業しましたが、ありがたいことに11年目に突入した長谷川です。
前回から最近の趣味の共有ネタを頭に入れるのやっていこうと考えていて今回も入れて行きます。
PYTHAGORA Bar wagon / whiskey salon model
バーワゴン - Whisky Salon model -
lt;コラボレーション商品> 新宿ウイスキーサロンとバーワゴンのコラボレーション商品 「自宅にウイスキーサロンを」 マスターオブウイスキー静谷和典氏監修のもと、より本格仕様なバーワゴンがここに誕生 <静谷和典氏・略歴>…
pythagora-shop.com
これを購入しました。
実は1月末から発注してたので2ヶ月くらい待ちました。
自分が好きなウィスキーはこれ!
はじまりのシングルモルト
はじまりのシングルモルト、ザ・グレンリベット。シングルモルトの遺産のすべてが継続されています。ザ・グレンリベットのどのボトルを手にしても、あなたは200年の歴史を味わうことができるのです
日頃は12年の4000円くらいのを飲んでます。
14年も1本持っててもったいなくて飲めません🤣
1本マニアックなグレンリヴェット持ってるんですが、貰い物で6〜7万するやつなので、これは絶対に飲めません🤣
グレンフィディックのVATシリーズとエクスペリメンタルシリーズとファイヤーアンドケーンもボウモアの12年、イチローズ・モルトのクラシックも買いました。
(一部amazonで買ったんだけど、ゆうパックは受取が難しいのでやめて欲しい😭)

今はこんな感じになってます。
これからどんどんコレクションしてこうと思います。
最初はポピュラーなやつから集めていきます。
ただソーダストリームも購入したのでコレクションするだけではなく、ゆっくり飲んでいこうと思います🥃
yadmとgit-cryptで暗号化
前回に続き、めちゃくちゃ脱線しましたが本題に入ります。
yadmはもともとtranscriptとgit-cryptに対応しています。
Encryption
It can be useful to manage confidential files, like SSH keys, across multiplesystems. However, doing so would put plain…
yadm.io
今回はOPENAI_API_KEYとかANTHROPIC_API_KEYとかGITHUB_TOKENとかちょっとbashにexportしないといけないものが増えてきていて良くないなとなってきまして、git-cryptで暗号化することにしました。
Install GPG key
git-cryptはGPG keyが必要なのでまずはGPG keyを作成します。
普通にhomebrewでInstallできます。
ついでにgit-cryptも入れちゃいましょう。
brew install gnupg git-cryptCreate GPG Key
gpg-generate-key.txtを作ります。
名前はGithubのUsernameが良いと思います。
Key-Type: RSA
Key-Length: 4096
Subkey-Type: RSA
Subkey-Length: 4096
Name-Real: 名前
Name-Email: メールアドレス
Expire-Date: 0
Passphrase: パスフレーズ
%no-protection
%commit作成したgpg-generate-key.txtを使ってbatchモードでGPG Keyを作成
gpg --batch --generate-key gpg-generate-key.txt自分は諸事情でGPG keyにメールアドレスが複数あるのでちょっと違う形でやっています。
詳細はGitHub Docsが参考になると思います。
新しい GPG キーを生成する - GitHub Docs
既存の GPG キーがない場合は、新しい GPG キーを生成してコミットおよびタグの署名に使用できます。
docs.github.com
List GPG Key
下記のコマンドで一覧化できます。
gpg --list-keys
[keyboxd]
---------
pub ed25519 2025-03-14 [SC]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
uid [ 究極 ] 名前 <xxxxxxxx@example.com>
sub cv25519 2025-03-14 [E]こんな感じで表示されると思います。
pubの下のkey typeと日付の下の文字列が鍵のIDです。
詳細はGitHub Docsがとても参考になると思います。
既存の GPG キーの確認 - GitHub Docs
GPG キーを生成する前に、GPG キーがすでに存在するかどうかを確認できます。
docs.github.com
git config
いくつかgitに設定を追加します。
下記のXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXは、前項の鍵のIDです。
git config --global user.signingkey XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
git config --global commit.gpgsign true
git config --global gpg.program gpg詳細はGitHub Docsがとても参考になります。
Git へ署名キーを伝える - GitHub Docs
ローカルでコミットに署名する場合は、使用したい GPG、SSH、または X.509 キーがあることを Git に知らせる必要があります。
docs.github.com
lazygit config
ついでにlazygitも設定しましょう
XDG_CONFIG_HOMEを設定していれば以下になると思います。
こちらにも鍵のIDをいれる必要があるので以下のように入れます。
.config/lazygit/config.yml
git:
# ~~~~ 略 ~~~~
signing:
key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# ~~~~ 略 ~~~~github GPG Key
ついでにgithubにもGPG Keyを追加しちゃいましょう。
以下のコマンドで貼り付けるべきpublic keyが出力されます。
ここでも鍵のIDが必要です。
gpg --armor --export XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXBuild software better, together
GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to…
github.com

.gitattributes
このファイルで暗号化するファイルをリストアップします。
これはroot Directoryに配置する必要があり、yadmはHOME Directoryがrootなので、 ~/.gitattributes が実際の配置先になります。
自分はyadmのaltを使ってbashの設定をtemplate化しているので以下のPATHになります。
.config/yadm/alt/.bash_private.d/secrets.Darwin
.config/yadm/alt/.bash_private.d/secrets.Darwin filter=git-crypt diff=git-cryptyadm git-crypt init
yadm git-crypt initこれを実行することでgit-cryptの準備が整います。
あとは普通にyadmでcommitとpushするだけで.gitattributesに記載されたファイルが暗号化されます。
もうすでにpushされてるファイルがある場合はgitコマンドが警告を出してくれるようになります。
対応するにはgitのhistoryから消し込みなどする必要があります。
yadm git-crypt status
以下のコマンドでyadmで管理されているファイルが暗号化される形で取り込まれるのかを確認できます。
yadm git-crypt status実際に叩くとyadmで管理されているファイルのすべてが出力されるので数が多いと大量に流れますが気にしなくて大丈夫です😆
暗号化されていれば以下のように表示されます。
encrypted: .config/yadm/alt/.bash_private.d/secrets.Darwin暗号化されていなければ以下のように表示されます。
not encrypted: .config/yadm/alt/.bash_private.d/starship/starship感想
dotconfig系の管理では、APIKeyなどが入ることがあるので最初から暗号化ツールを有効化しておいた方がいいですね
ターミナル環境について他の記事も書いているので、よろしければこちらもご覧ください!
『ターミナルがダサいとモテない』シリーズ一覧
転載:ターミナルがダサいとモテない。yadmとgit-cryptの連携で暗号化
この記事は Medium(@yusuke_h) からの転載です。
