GithubでGPG署名を設定する

#git #github #GPG

目次

クライアント(User)側の設定

GPG 鍵を作成

gpg --full-generate-key

このとき、メールは Github に登録済みのメールを使用してください。

GPG 鍵の ID を取得

pub   rsa3072/OOOOOOOOOOOOOO 2024-03-01 [SC]
      XXXXXXXXXXXXXXXXXXXXXXXXOOOOOOOOOOOOOO
uid                 [  究極  ] Buntin Synthia (github) <mail@buntin.xyz>
sub   rsa3072/TTTTTTTT 2024-03-01 [E]

この場合、ID はOOOOOOOOOOOOOOになります。

以下でも取得できます。

gpg --list-keys --keyid-format LONG | grep pub | awk '{print $2}' | cut -d'/' -f2;

GPG 公開鍵の出力

ID がわかったら、以下のコマンドを実際の ID に差し替えて実行してください。

gpg --armor --export OOOOOOOOOOOOOO

以下の様な感じのが出てくるかと思います。それを後々 Github に登録するので ID と一緒に取っといてください。

-----BEGIN PGP PUBLIC KEY BLOCK-----

???
...
???
-----END PGP PUBLIC KEY BLOCK-----

pinentry の設定

正確な定義はわかりませんが、コミット時署名のためのパスワードを打つための専用の TUI ソフトウェア的なやつです。

brew install pinentry-mac;        # Darwin
sudo apt install pinentry-gtk2;   # Debian系 GUI
sudo apt install pinentry-curses; # Debian系 CUI
sudo dnf install pinentry;        # RHEL系(EPEL必要かも)

Git の設定

git config --global user.signingkey OOOOOOOOOOOOOO # GPG鍵のID
git config --global commit.gpgsign true
git config --global gpg.program gpg

環境変数 GPG_TTY の設定

.zshrc,.bashrc に、1行追加するだけです。

出力先の指定、的なことを行なっています。

export GPG_TTY=$(tty)

クライアント側終わり

git に ssh できる環境を作っておきましょう。これやっててできないことはないと思いますが。

Github 側の設定

Github に鍵を追加する。

設定 -> SSH and GPG keys -> New GPG keys

から追加可能。ID と公開鍵を入力する。

完了!

これで、コミット時に GPG 署名ができるようになります。

Cloudinary image<github-gpg-signing-result.png-2024/03/01/github-gpg-signing-result>