根据 git,您现在可以使用现有的 ssh 密钥对提交进行签名。
https://github.blog/2021-11-15-highlights-from-git-2-34/#tidbits
接下来:https://unix.stackexchange.com/questions/269188/use-my-ssh-key-to-sign-git-commits。
我也一直在浏览这个文档: https: //git-scm.com/docs/git-config#Documentation/git-config.txt-gpgprogram,但目前还不清楚如何使用它。
我已将 gpg 格式设置为 ssh 并将签名设置为 true,因此目前它正在尝试对其进行签名但失败。我相信我还需要设置 user.signingKey 但我不知道格式是什么,即git config --global user.signingKey <what-is-supposed-to-go-here>
?
我还有第二个问题。如果一年后我格式化我的电脑并丢失了我的密钥,我将无法验证这些提交是否仍然属于我。除了将密钥转储到某个在线驱动器中(无论如何我都可能会丢失它)之外,是否有一个好的标准将该密钥保存在某个地方?
编辑:我至少设法让 gpg 工作。以下:Git 错误 - gpg 无法签署数据,我的 gpg 崩溃了:
gpg: signing failed: Inappropriate ioctl for device gpg: [stdin]: clear-sign failed: Inappropriate ioctl for device
然后使用 Maven 在 MacOS 上添加export GPG_TTY=$(tty)
到 bash,从“gpg:签名失败:设备的 ioctl 不合适”,最终为我工作,所以它至少使用 gpg 对其进行签名。
编辑:以为我设法让它工作,但没有。按照https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generate-a-new-ssh-key-and-adding-it-to-the-ssh-agent,我创建了一个新的 ed25519 ssh 密钥。
之后你需要git config --global gpg.format "ssh"
,一起git config --global user.signingkey "<key>"
。
我用作ssh-ed25519 ASD9s8df79AASDa8sd79as7d9a8s7d89ASDASD98a7sd98a7sdASA/sd user@domain.io
密钥,来自~/.ssh/id_ed25519.pub
.
但后来我去github看到:
现在我已经不知道了。
小智 10
I:设置gpg格式接受ssh:
git config --global gpg.format ssh
二. 将签名密钥设置为您的 ssh 密钥公共文件
git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB
完成这些操作后,请转到 GitHub > 配置文件 > SSH 和 GPG 密钥 > SSH 密钥。然后单击添加新的 SSH 密钥。确保选择类型作为签名密钥并在框中填写公钥。
2022 年 7 月:我在这里提出了这个新选项,其中我提到:
ssh 签名的配置
user.signingKey
支持包含密钥的文件的路径,或者为了方便起见,支持带有 ssh 公钥的文字字符串。为了区分这两种情况,我们检查前几个字符是否包含“
ssh::
”,这不太可能是路径的开头。
但是,GitHub 可能尚未识别基于 SSH 的签名。这在这个线程
中被提到并添加到讨论 7744中。github-community/community
2022 年 6 月上旬,您有:
除了上面提到的 valid-after|before 标志之外,git 确实提供了对撤销 SSH 签名密钥的直接支持:
Run Code Online (Sandbox Code Playgroud)gpg.ssh.revocationFile
SSH KRL 或已撤销的公钥列表(不带主体前缀)。
有关详细信息,请参阅 ssh-keygen(1)。如果在此文件中找到公钥,则它将始终被视为具有信任级别“
never
”,并且签名将显示为无效。
希望 GitHub 能够提供类似的功能。
David Staheli(GitHub 产品经理)回答:
感谢这些很好的建议。我们可能会发布第一个版本,然后快速跟进其中的一些想法。一旦最终范围确定,我将尝试分享更多细节。尽管 GitHub 已经识别出 GPG 密钥何时过期或撤销,但我想确保我们会支持 SSH 相同的功能,如果 v1 中没有,那么多久之后才会支持。
2022 年 8 月更新:
现在支持 SSH 提交验证
GitHub 现在支持 SSH 提交验证,因此您可以使用自行生成的 SSH 公钥在本地签署提交和标签,这将使其他人对您所做更改的来源充满信心。
如果提交或标签具有可加密验证的 SSH 签名,GitHub 会将提交或标签设为“已验证”或“部分验证”。
如果您已使用 SSH 密钥通过 GitHub 进行身份验证,您现在可以上传相同或不同的密钥并将其用作签名密钥。
您可以添加到帐户的签名密钥数量没有限制。有关更多信息,请访问GitHub 文档中的 SSH 提交验证。
注意:自 2022 年 12 月起,GitLab (15.7) 还支持使用 SSH 进行提交签名。
GitLab 16.9(2024 年 2 月)对于 gitlab.com 非免费(高级版或旗舰版)
使用 SSH 证书验证并签署提交
以前,GitLab.com 上的 Git 访问控制选项依赖于用户帐户中设置的凭据。现在,您可以设置一个流程,以便仅使用 SSH 证书即可进行 Git 访问。您还可以使用这些证书来签署提交。
归档时间: |
|
查看次数: |
8468 次 |
最近记录: |