SSH キーでコミットに署名する

署名済みコミットの制限事項

現時点では、SSH キーを使用して検証できるのは、CLI でプッシュされたコミットだけです。

You can use SSH keys to sign commits with an SSH key that you generate yourself. For more information, see the Git reference documentation for user.Signingkey. If you already use an SSH key to authenticate with Bitbucket, you can use that same key to sign commits. There's no limit on the number of signing keys you can add to your account.

SSH 署名の検証は Git 2.34 以降で利用可能です。Git のバージョンをアップデートするには、Git の Web サイトを参照してください。

既存の SSH キーの確認

SSH キーをすでに持っているかどうかが不明な場合、既存の SSH キーをローカルで確認できます。

既存の SSH キーがあるかどうかを確認するには、次の手順に従います。

  1. ターミナルで次のコマンドを使用して、自身がアクセス権を持つ SSH キーの一覧を表示します。

    ls -al ~/.ssh
  2. 出力をチェックして SSH キーのペアがあるかどうかを確認します。

新しい SSH キーを生成して追加する

コミットに署名するための新しい SSH キーを生成して追加するには、使用しているオペレーティング システムに応じた手順に従ってください。

SSH キーでコミットに署名する

SSH キーでコミットに署名するには、ターミナル (CLI) を使って以下の手順に従ってください。

  1. キーの形式について Git に指示します。

    git config --global gpg.format ssh
  2. コミットの署名にどのキーを使うかを Git に指示します。これを行うには、下の例の「~/.ssh/id_rsa.pub」を自分の公開キーに置き換えます。

    git config --global user.signingkey ~/.ssh/id_rsa.pub
  3. ローカル ブランチに変更をコミットするときは、次のように git commit コマンドに -S フラグを追加します。

    git commit -S -m "your commit message"
  4. SSH キーのパスフレーズを入力します。

  5. コミットが署名されたことを確認します。

    git log --show-signature -1

    Note: You will need to setup an allowed_signers file in your ~/.ssh/ directory. For more information, see the Git documentation for allowedSignersFile. Make sure to use the email address associated with your Bitbucket account. Refer to the example below.

    echo "bitbucket@example.com $(cat ~/.ssh/id_rsa.pub)" > ~/.ssh/allowed_signers git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers
  6. 必要に応じて、ssh-agent を再実行することを検討してください。

    ssh-add ~/.ssh/id_rsa.pub eval $(ssh-agent)

署名検証ステータス

ステータス

結果

検証済み

  • 信頼できる作成者がコミットに署名し、署名が検証された。

未認証 ⚠️

  • コミットには SSH 署名があるが、メール アドレスが一致していないため検証が失敗する。

  • コミットの署名に使用されたキーが、Bitbucket のユーザー アカウントにアップロードされていない。

  • コミットに署名するためのキーがサポートされていないか、削除または取り消されたことが原因で無効になっている。

署名なし

  • コミットが、署名済みコミットの実装前に作成されている。

  • コミットが署名されていない。

  • コミットが Bitbucket の Web インターフェイス経由で行われている。

  • The commit was made with a merge strategy.

 

さらにヘルプが必要ですか?

アトラシアン コミュニティをご利用ください。