GithubでGPG署名を設定する

投稿日:2024/3/1最終更新日:2026/3/22

Githubで、コミットにGPG鍵で署名できるようにするための設定方法です。githubのコミットログに「Verified」と表示されるようになります。

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

GPG 鍵を作成

gpg --full-generate-key

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

GPG 鍵の ID を取得

pub   rsa3072/OOOOOOOOOOOOOO 2024-03-01 [SC]
      XXXXXXXXXXXXXXXXXXXXXXXXOOOOOOOOOOOOOO
uid                 [  究極  ] Buntin Synthia (github) <[email protected]>
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 署名ができるようになります。

02_github-gpg-signing/github-gpg-signing-result

[2024/05/23 追記]

パスフレーズ、パスワードの変更をしたくなった時の変更方法です。

正確には GPG の使い方なのかもしれませんが、自分は GPG の使用機会はほぼこれだけなのでここに残しておきます。

[email protected]::~ $ gpg --edit-key XXXXXXXXXXXXXXXX
gpg (GnuPG) 2.4.5; Copyright (C) 2024 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

秘密鍵が利用できます。

sec  rsa3072/XXXXXXXXXXXXXXXX
     作成: 2024-03-27  有効期限: 無期限      利用法: SC
     信用: 究極        有効性: 究極
ssb  rsa3072/????????????
     作成: 2024-03-27  有効期限: 無期限      利用法: E
[  究極  ] (1). synthia.liz (github-buntinjp) <[email protected]>

gpg> passwd

gpg> save
鍵は無変更なので更新は不要です。
[email protected]::~ $
Buy Me A Coffee