🔑

GitHub CLIでGitHubにGPGキーを登録する

2023/08/08に公開

GPGキーの生成

以下のコマンドでキーの生成が開始されます。

gpg --quick-gen-key {USER_ID} ed25519 default 0

指定しているオプション以下の通りです。

  • {USER_ID} ユーザー名とメールアドレスを一緒に入力する。
  • ed25519 楕円曲線暗号を指定。
  • default 鍵の機能を指定。defaultにすると署名と証明の機能が有効になる。
  • 0 有効期限の設定。0だと無期限。

GPGキーのエクスポート

まずは作成したGPGキーのIDを確認します。

gpg -k

pubの2行目に表示されているのがキーのIDです。
以下のコマンドで公開鍵をテキストファイル形式でエクスポートします。

gpg --export -a {GPGキーのID} > pub.asc

GPGキーの登録

ここからGitHub CLIを使ってGitHubに先程生成したGPGキーを登録していきます。
と言っても以下のコマンドを入力するだけです。

gh gpg-key add pub.asc
✓ GPG key added to your account

と表示されれば登録完了です。
もし

Error: insufficient OAuth scopes to list GPG keys
Run the following to grant scopes: gh auth refresh -s write:gpg_key

のエラーが出たら大人しく

gh auth refresh -s write:gpg_key

と入力して認証をしましょう。
ちなみにgh gpg-key listと入力すると登録した鍵の一覧が見れます。

GitにGPGキーを登録する

以下のコマンドで登録します。

git config --global gpg.program gpg
git config --global user.signingkey {GPGキーのID}

またデフォルトで全てのコミットに署名をしたい場合は以下のコマンドも実行します。
毎回コミット時にオプションを指定するのも面倒くさいので、設定することをおすすめします。

git config --global commit.gpgsign true
git config --global tag.gpgsign true

コミットごとに署名を行う場合は以下の通りです。

git commit -S

しかし私の環境ではそのままコミットを行おうとすると

error: gpg failed to sign the data
fatal: failed to write commit object

と言われてしまいました。
色々調べた結果 ターミナルの高さが足りていない 場合にエラーが発生するようです。
VSCodeの統合ターミナルで作業していたので、高さを引き上げたところパスワード入力画面が現れ、エラーは表示されなくなりました。

以上の作業により署名ができ、GitHub上でもVerifiedと表示されました!

GitHub

参考文献

https://docs.github.com/ja/authentication/managing-commit-signature-verification/generating-a-new-gpg-key
https://cli.github.com/manual/gh_gpg-key
https://text.baldanders.info/openpgp/gnupg-cheat-sheet
https://blog.katsubemakito.net/git/github-gpg

GitHubで編集を提案

Discussion