我一直在尝试重新配置我的 SSH 密钥

Ang*_*nze 4 git github ssh-keys git-bash

我不断收到以下错误:

git commit -sam "blah blah blah"
fatal: either user.signingkey or gpg.ssh.defaultKeyCommand needs to be configured
Run Code Online (Sandbox Code Playgroud)

我刚刚完全更新了 Git,试图解决这个问题,所以它完全是最新的,然后我成功地将所有常用配置添加到现在在 Git Bash 中运行的新版本中。我反复访问 Github 的 SSH 密钥生成器并一一按照说明进行操作。毕竟,我仍然收到此错误。

我无法在本地计算机上的任何地方(Git Bash、终端、GitKraken;我什至崩溃并尝试了 Github Desktop)进行提交,更不用说签名、带注释的提交了,这是我的习惯。我从我的 Github 帐户中删除了过期的密钥。我不知道还能做什么。

我快要疯了。

tor*_*rek 5

You're mixing together the concepts of ssh keys (which are somewhat generalized and apply across all of ssh, and which you can use to authenticate yourself to GitHub) and Git's signed commits (and signed annotated tags). These are different, although they use related mechanisms.

In particular, to use an ssh key to sign a Git commit, you must:

  • 在本地配置您的 ssh,以便它可以签署提交(这可能支持也可能不支持,具体取决于您的 OpenSSH 版本);
  • 告诉 Git如何使用你的 ssh 来签署提交(这取决于你的 ssh 版本);和
  • 告诉 Git使用ssh 来签署提交。

这三个步骤都没有使用或需要GitHub上的任何内容。user.signingkey但这就是这里失败的地方:你还没有在 Git 中进行设置gpg.ssh.defaultKeyCommand,这就是第二个要点出现的地方。(你已经在做第三个要点了,但是 Git 还不知道如何运行你的 ssh! )您需要弄清楚如何让 Git 在您的系统上调用正确的命令(这在一定程度上取决于您的操作系统和 OpenSSH 版本)。

然而,一旦您进行了此类签名的提交,这些数字签名仅对您有用,对其他人没有用,除非您已经传播了这些数字签名中涉及的密钥。这就是 GitHub 参与的地方。

请参阅如何使用现有的 ssh 密钥对 git 提交进行签名,特别是 VonC在此处Why does git Sign with GPG keyrather not using SSH key? 的回答。,看看如何做第一部分。请参阅 VonC 和其他答案,特别是Jakuje 的此处,了解有关使用 ssh 密钥的一些注意事项。

我不知道 GitHub 方面的任何细节,但 VonC 的答案有更多。

一般来说,使用 GPG 来签署提交和/或带注释的标签要容易得多。