GitHub で SSHキーを使用してコミット署名する手順について記載します。
各人の SSH キーを使用してコミットに署名することができます。下図のように GitHub の Commits 画面で検証結果を確認することが可能です。

SSH キーを使用してコミットに署名する主な理由は、コードの信頼性とセキュリティを向上させるためです。この手法を利用することには、次のような利点があります。
注意
v2.34 以降の git で本機能を使用することができるようです。
古い git を使用している場合は新しい git へ更新してお試しください。
SSH キーがまだあるかどうかわからない場合は、ローカルで既存の SSH キーを確認できます。
既存のSSHキーがあるかどうかを確認するには:
まずはSSHキーを作成します。
すでにSSH認証を使用している場合はこの手順をスキップできます。
ssh-keygen -t ed25519 -C "your_email@example.com"
以下を表示したらそのまま Enter キーを押します。
Generating public/private ed25519 key pair. Enter file in which to save the key (/root/.ssh/id_ed25519):
パスフレーズはここではなしで進めます。以下が出てきたらそのまま Enter キーを押します。
Enter passphrase (empty for no passphrase): Enter same passphrase again:
これでSSH鍵を作成できました。 Enter file in which to save the key で指定したディレクトリに秘密鍵と公開鍵の2つのファイルが作成されます。
コミット署名検証用の公開鍵をGitHubに登録します。
下図画面(SSH and GPG keys)を開いて[New SSH key]ボタンをクリックします。

事前に準備した公開鍵(例:id_ed25519.pub)を登録します。
Title, Key type (Signing Key を選択), Key を登録したら[Add SSH key]ボタンをクリックします。

SSH キーを使用してコミットに署名するには、ターミナル (CLI) を使用して次の手順に従います。
下記では "--global" を付与して全ての git を対象とする設定を例に記載しています。リポジトリ毎に設定する場合は "--global" を削除して実施します。
git config --global gpg.format ssh
私の場合は ~/.ssh/bitbucket/id_ed25519.pub を公開鍵として使用しているので下記コマンドを使用します。
git config --global user.signingkey ~/.ssh/bitbucket/id_ed25519.pub
git commit -S -m "your commit message"
-S を毎回つけるのが面倒な場合は、後述の "5. git commit で常に署名するように設定する" を確認してください。
git log --show-signature -1表示例です。

[任意] ディレクトリにファイル
allowedSignersFile をセットアップ
本設定は、署名されたコミットを検証するために使用します。対象リポジトリへコミットするユーザーの (1)メールアドレス、(2)公開鍵、を
allowedSignersFile へ登録します。
allowedSignersFile は、Git で SSH
署名を使用したコミットやタグの検証を行う際に、信頼できる SSH 公開鍵をリストとして定義するファイルです。
登録手順例を以下に記載します。bitbucket@example.com
および id_ed25519.pub
を登録するユーザーのメールアドレス・公開鍵、へ置き換えて登録します。
echo "bitbucket@example.com $(cat id_ed25519.pub)" > ~/.ssh/allowed_signers git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers
「ユーザーのメールアドレス SSH公開鍵」例えばこんな感じのファイルです。
example@domain.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAxxxxxx... foo.boo@domain.com ssh-ed25519 ABCDE4NzaC1lZDI112345678xxxxxx...そして .gitconfig には allowedSignersFile のパスが記載されます。
ssh-add ~/.ssh/id_ed25519.pub eval $(ssh-agent)
kinoshita@PC-FooBoo:~$ cat .gitconfig
[user]
name = kinoshita hidetoshi
email = ********@********.com
signingkey = /home/kinoshita/.ssh/bitbucket/id_ed25519.pub
[gpg "ssh"]
allowedSignersFile = /home/kinoshita/.ssh/allowed_signers
[gpg]
format = ssh
[core]
省略
[remote "origin"]
省略
[branch "main"]
省略
[commit]
gpgsign = true
[gpg]
format = ssh
[user]
signingkey = /home/kinoshita/.ssh/bitbucket/id_ed25519.pub
git commit 時に “-S“ を付けて実施することは面倒です。一部のツールではこれを補助する仕組みがある様子ですが、常に署名してくれる方が良い場合もありそうです。
署名対象のディレクトリへ移動後、下記コマンドを実行します。
git config commit.gpgsign true
もしくは全てを対象に有効化する場合は ‘--global’ を付けて下記コマンドを実行します。
git config --global commit.gpgsign true
後者のコマンドを実行後の私の .gitconfig ファイル例です。(メールアドレスは **** で変更表記しています)
gpfsign = true の部分が追加されます。
kinoshita@PC-FooBoo:~$ cat .gitconfig
[user]
name = kinoshita hidetoshi
email = ********@********.com
signingkey = /home/kinoshita/.ssh/bitbucket/id_ed25519.pub
[gpg "ssh"]
allowedSignersFile = /home/kinoshita/.ssh/allowed_signers
[gpg]
format = ssh
[commit]
gpgsign = true
以上の設定により git commit に “-S” を付けることなくコミットに対して常に署名するようになります。
以上の設定と署名付きコミットを行った後、GitHub へプッシュした Commits 画面を紹介します。
下図の通り[Verified]の表示が追加されました。

| ステータス | 結果 |
|---|---|
| Verified | コミットが署名され、署名が正常に検証されました |
| Unverified | コミットは署名されていますが、署名を検証できませんでした |
| No verification status | コミットが署名されていません |
本ページの情報は、特記無い限り下記 MIT ライセンスで提供されます。
| 2026-01-20 | - | 新規作成 |