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

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

Photo by Markus Spiske on Unsplash

dotfiles管理と暗号化の組み合わせしてますか?

encryptってunsplashに入れたらマトリクスみたいな・・・😅

恵比寿でIT企業をやっているとモテると聞いて創業しましたが、ありがたいことに11年目に突入した長谷川です。

前回から最近の趣味の共有ネタを頭に入れるのやっていこうと考えていて今回も入れて行きます。

PYTHAGORA Bar wagon / whiskey salon model

バーワゴン - Whisky Salon model -

lt;コラボレーション商品> 新宿ウイスキーサロンとバーワゴンのコラボレーション商品 「自宅にウイスキーサロンを」 マスターオブウイスキー静谷和典氏監修のもと、より本格仕様なバーワゴンがここに誕生 <静谷和典氏・略歴&gt…

pythagora-shop.com

これを購入しました。
実は1月末から発注してたので2ヶ月くらい待ちました。

自分が好きなウィスキーはこれ!

はじまりのシングルモルト

はじまりのシングルモルト、ザ・グレンリベット。シングルモルトの遺産のすべてが継続されています。ザ・グレンリベットのどのボトルを手にしても、あなたは200年の歴史を味わうことができるのです

www.theglenlivet.jp

日頃は12年の4000円くらいのを飲んでます。

14年も1本持っててもったいなくて飲めません🤣
1本マニアックなグレンリヴェット持ってるんですが、貰い物で6〜7万するやつなので、これは絶対に飲めません🤣

グレンフィディックのVATシリーズとエクスペリメンタルシリーズとファイヤーアンドケーンもボウモアの12年、イチローズ・モルトのクラシックも買いました。
(一部amazonで買ったんだけど、ゆうパックは受取が難しいのでやめて欲しい😭)

グレンフィディックのボトルとウイスキーコレクション

今はこんな感じになってます。
これからどんどんコレクションしてこうと思います。
最初はポピュラーなやつから集めていきます。

ただソーダストリームも購入したのでコレクションするだけではなく、ゆっくり飲んでいこうと思います🥃

yadmとgit-cryptで暗号化

前回に続き、めちゃくちゃ脱線しましたが本題に入ります。

yadmはもともとtranscriptgit-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も入れちゃいましょう。

Plain text
brew install gnupg git-crypt

Create GPG Key

gpg-generate-key.txtを作ります。

名前はGithubのUsernameが良いと思います。

Plain text
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を作成

Plain text
gpg --batch --generate-key gpg-generate-key.txt

自分は諸事情でGPG keyにメールアドレスが複数あるのでちょっと違う形でやっています。

詳細はGitHub Docsが参考になると思います。

新しい GPG キーを生成する - GitHub Docs

既存の GPG キーがない場合は、新しい GPG キーを生成してコミットおよびタグの署名に使用できます。

docs.github.com

List GPG Key

下記のコマンドで一覧化できます。

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

Plain text
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

Plain text
git:
# ~~~~ 略 ~~~~
  signing:
    key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# ~~~~ 略 ~~~~

github GPG Key

ついでにgithubにもGPG Keyを追加しちゃいましょう。

以下のコマンドで貼り付けるべきpublic keyが出力されます。

ここでも鍵のIDが必要です。

Plain text
gpg --armor --export XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Build software better, together

GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to…

github.com

GitHubアカウントに登録したGPG公開鍵

.gitattributes

このファイルで暗号化するファイルをリストアップします。

これはroot Directoryに配置する必要があり、yadmはHOME Directoryがrootなので、 ~/.gitattributes が実際の配置先になります。

自分はyadmのaltを使ってbashの設定をtemplate化しているので以下のPATHになります。

.config/yadm/alt/.bash_private.d/secrets.Darwin

Plain text
.config/yadm/alt/.bash_private.d/secrets.Darwin filter=git-crypt diff=git-crypt

yadm git-crypt init

Plain text
yadm git-crypt init

これを実行することでgit-cryptの準備が整います。

あとは普通にyadmでcommitとpushするだけで.gitattributesに記載されたファイルが暗号化されます。

もうすでにpushされてるファイルがある場合はgitコマンドが警告を出してくれるようになります。
対応するにはgitのhistoryから消し込みなどする必要があります。

yadm git-crypt status

以下のコマンドでyadmで管理されているファイルが暗号化される形で取り込まれるのかを確認できます。

Plain text
yadm git-crypt status

実際に叩くとyadmで管理されているファイルのすべてが出力されるので数が多いと大量に流れますが気にしなくて大丈夫です😆

暗号化されていれば以下のように表示されます。

Plain text
    encrypted: .config/yadm/alt/.bash_private.d/secrets.Darwin

暗号化されていなければ以下のように表示されます。

Plain text
not encrypted: .config/yadm/alt/.bash_private.d/starship/starship

感想

dotconfig系の管理では、APIKeyなどが入ることがあるので最初から暗号化ツールを有効化しておいた方がいいですね

ターミナル環境について他の記事も書いているので、よろしければこちらもご覧ください!
『ターミナルがダサいとモテない』シリーズ一覧

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

この記事は Medium(@yusuke_h) からの転載です。