🔑
GitHub CLIでGitHubにGPGキーを登録する
GPGキーの生成
以下のコマンドでキーの生成が開始されます。
gpg --quick-gen-key {USER_ID} ed25519 default 0
指定しているオプション以下の通りです。
-
{USER_ID}
ユーザー名とメールアドレスを一緒に入力する。-
"Alice <alice@example.com>"
のように。 - メールアドレスはGitHubに登録しているもの。
- GitHubが提供するコミット用のメールアドレスを使ってもOK。
-
-
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
と表示されました!
参考文献
Discussion