背景
GitHubではコミットに署名するとコミットの横にVerified
マークが付きます。
公式ドキュメントにやり方はバッチリ書いてあるのですがなぜか何回やってもPermission denied(pubilckey)
になりpushに失敗していました。
原因
コミット署名用のSSHキーしかGitHubに登録していなかったのが原因でした。
GitHubに公開鍵を追加する際にKey typeを選べます。
Authentication Key
は認証用、Signing Key
はコミット署名用のキーですね。Signing Keyしか登録しなかったので、アクセスが拒否されていたという訳です。
どこにも解決方法が書いてなかったのですが、当たり前すぎて書かれていなかったんでしょうねぇ...お恥ずかしい。
補足
公式ドキュメントによると認証用のキーと署名用のキーは同じものを使用できます。
https://docs.github.com/ja/authentication/managing-commit-signature-verification/about-commit-signature-verification#ssh-commit-signature-verification
SSHキーの登録からpushまでの流れ、およびコミット署名の方法については先人の記事がいっぱいあるので割愛。