git签名提交和用户的内部工作是什么?signingkey选择吗?



了解基本的加密、ssh密钥和证书。在配置签名git提交时,我遇到https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key

我使用ssh密钥签名,所以根据文档:

$ git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB

这就是我困惑的地方,为什么我们要用我们的公钥签名,不是public吗?? 根据我的说法,它应该使用我们本地存储的私钥签署提交,然后无论我们在哪里存储我们的公钥(GitHub, GitLab等),他们都会使用公钥解密此签名以验证签名。

我肯定我漏掉了一些东西,到底发生了什么?我推测它只使用私钥进行签名,但要求ssh-agent使用相应的私钥进行签名。

我认为我的想法是正确的:从https://git-scm.com/docs/git-config文档/git-config.txt-usersigningKey

如果git-tag[1]或git-commit[1]在创建签名标记或提交时没有选择您希望它自动选择的键,您可以使用该变量覆盖默认选择。这个选项不加修改地传递给gpg的——local-user参数,因此您可以使用gpg支持的任何方法指定密钥。如果gpg。格式设置为SSH,当使用SSH -agent时,它可以包含到您的SSH私钥或公钥的路径。也可以直接包含以key::为前缀的公钥(例如:"key::ssh-rsa XXXXXX identifier")。私钥需要通过ssh-agent可用。如果没有设置,git将调用ggp .ssh. defaultkeycommand(例如:"ssh-add -L")并尝试使用第一个可用的键。为了向后兼容,以"ssh-"开头的原始密钥,如"ssh-rsa XXXXXX标识符",被视为"key::ssh-rsa XXXXXX标识符",但这种形式是不赞成的;请使用key::格式。

看看你高亮显示的部分:

如果gpg

。格式设置为SSH,当使用SSH -agent时,它可以包含到您的SSH私钥或公钥的路径。也可以直接包含以key::为前缀的公钥(例如:"key::ssh-rsa XXXXXX identifier")。私钥需要通过ssh-agent可用。

Git,使用您的私钥进行签名,但是当您使用ssh-代理时,私钥是从代理获得的,而不是从磁盘上的文件。公钥仅用于识别适当的私钥。

相关内容

  • 没有找到相关文章