不同的 git 配置用户和 ssh 密钥,如何使 git 拉取工作?

Different git config user and ssh keys, how do I make git pull work?

bitbucket ssh 密钥和git 配置用户之间有什么关系吗?

当我尝试 ssh -T git@bitbucket.org,

与我尝试 git config -l 当前 git 存储库时相比,它提供了不同的用户。

git 的 ssh 身份验证如何工作?

我也不确定 .ssh 文件夹中的 ssh 密钥属于哪个用户?

我无法对 bitbucket 进行身份验证以访问当前 git 存储库。

我该如何解决这个问题?

Git 配置与 SSH 身份验证(或 HTTP/HTTPS 身份验证)无关 - 它仅与 Git 的内部提交跟踪有关。同样,SSH 认证只与 SSH 两端的系统(在本例中为您的系统和 Bitbucket)相关,而 HTTP/HTTPS 认证仅与 HTTP/HTTPS 认证相关。 SSH 用户和 .git/config 用户不匹配并不重要; Git 会做它的事,它会 运行 SSH 命令(使用 SSH 自己的配置)在适当的时候。

您执行的 ssh -T git@bitbucket.org 检查显示哪个 Bitbucket 用户添加了相关密钥。 (您可以通过 ssh -Tv git@bitbucket.org 查看它使用的是哪个特定密钥。)如果您无法使用 SSH 处理特定的 Bitbucket 存储库,但您从 ssh -T git@bitbucket.org 获得了用户名,那么一个或多个事情可能会发生在这里:

  • 您的 Bitbucket 用户没有该存储库的相关权限。
  • 您正在尝试推送到指定了分支权限的分支,但您无权执行您正在尝试执行的操作。
  • 该密钥已作为 "access key" 添加到 Bitbucket - CI/CD 系统用于访问给定存储库的只读密钥 - 您正在尝试推送或试图在它无权访问的回购协议上使用该密钥。
  • 还有一个问题您没有在此处提及 - 可能您的本地存储库副本比 Bitbucket 的提交少了一些,或者您的本地副本在磁盘上已损坏,或者您的本地 SSH 客户端无法正常工作正确。

您收到的具体消息应该指出可能是这些潜在问题中的哪一个。 (您没有真正了解足够的细节让我们知道。)

特别是使用 Bitbucket,您还可以将 Bitbucket 用户名作为 SSH URL 的一部分放入远程 - 类似于 git clone username@bitbucket.org:owner/repogit remote set-url origin username@bitbucket.org:owner/repo。这主要是为了让在同一系统中使用多个 Bitbucket 帐户的人可以保持他们的 SSH 密钥不同。 (git@bitbucket.org 仍然有效,当然,~/.ssh/config hack 也是如此,但我认为特定于用户名的方法更简洁。)