不同的git config用户和ssh密钥,如何使git pull工作?

时间:2019-12-13 15:23:46

标签: git ssh bitbucket

bitbucket ssh密钥和git config用户之间是否有任何关系?

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

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

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

我还不确定.ssh文件夹中的ssh密钥是哪个用户的?

我无法通过Bitbucket进行身份验证,以访问当前的git repo。

我该如何解决?

1 个答案:

答案 0 :(得分:2)

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用户没有该存储库的相关权限。
  • 您正尝试推送到具有指定分支权限的分支,而您无权执行您想做的事情。
  • 该密钥已作为“访问密钥”添加到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一样仍然有效,但是我认为特定于用户名的方法更为简洁。)

相关问题