GitHubにGPG鍵を登録する
GPG鍵の管理で作成した署名に使うサブキーの鍵IDが必要なので調べる。以下では —keyid-format=long しているが、ここで見える8バイトのIDはフィンガープリントの末尾なので —with-subkey-fingerprint でもいい。
$ gpg --list-keys --keyid-format=long/home/lufia/.local/share/gnupg/pubring.kbx------------------------------------------pub ed25519/013948EA09EEDAD6 2025-03-15 [SC] 53508FECCFAF7FFCF9F6AD46013948EA09EEDAD6uid [ultimate] KADOTA, Kyohei <lufia@lufia.org>sub ed25519/8D89585B4B628220 2025-03-15 [S] [expires: 2027-03-15]ここでは署名用サブキーのIDは 8D89585B4B628220 なので、以下のコマンドで出力した内容をGitHub設定の SSH and GPG keys に登録する。
gpg --armor --export 8D89585B4B628220このとき、複数のPCでそれぞれサブキーを作成した場合はどうするのか。gpg --exportコマンドと!の挙動を整理に書いたが、どのような引数で実行しようと常にマスターキーの公開鍵が含まれる。そうするとGitHubのUIから登録したとき、2つ目以降の鍵登録が以下のエラーで失敗する。
Key already exists and Public key already exists
どうやらGitHubでは、同じマスターキーから作られた異なるサブキーを分けて登録できないので、以下のどちらかを選択しなければならない。
- 複数のPCで同じサブキーを利用する
- 複数のPCで異なるサブキーを利用するが、公開鍵はすべて1つにまとめてGitHubへ登録する
GPGではサブキーを普段使いするとき共有しないと決めたので、後者の方法で対応する。マージするときは以下のようにする。不要になった鍵を覚えておかなければいけないのが厳しいのでGPG鍵リストを書いた。
$ curl https://github.com/lufia.gpg | gpg --import$ gpg -k --keyid-format=long[keyboxd]---------pub ed25519/1A3BB38A4BC27A81 2025-03-17 [C] C7BF8AB911C50EE3291DD45F1A3BB38A4BC27A81uid [ 究極 ] KADOTA, Kyohei <lufia@lufia.org>sub ed25519/209D69BD8ED702E2 2025-05-01 [S] [有効期限: 2028-04-30]sub rsa2048/4D9F3F8C6FD3990A 2025-05-01 [A]sub ed25519/ECD6D6D83FC11479 2025-05-01 [A] [有効期限: 2028-04-30]sub ed25519/A08A761FFF8FAE37 2025-03-19 [S] [有効期限: 2027-03-19]sub ed25519/2D9B751B97D95DFA 2025-03-17 [S] [有効期限: 2027-03-17]
# 不要な鍵があるなら消す$ gpg --delete-keys 2D9B751B97D95DFA
$ gpg -a --export登録が終わればGitHubの公開鍵URLから参照できる。