【问题标题】:Different git config user and ssh keys, how do I make git pull work?不同的 git config 用户和 ssh 密钥,我如何使 git pull 工作?
【发布时间】:2019-12-14 03:34:08
【问题描述】:

bitbucket ssh keys 和 git config user 有关系吗?

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

它提供的用户与我为当前的 git repo 尝试 git config -l 时不同。

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

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

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

我该如何解决这个问题?

【问题讨论】:

  • ssh 尝试所有密钥,直到找到对,或者没有一个被接受。了解 SSH 的工作原理。
  • 与git config中的git用户,bitbucket上保存的key有什么关系吗?
  • 当然。 Git 提示 SSH 尝试使用什么密钥。因此,在 Git 中有全局配置(默认)和每个存储库。棘手的问题是同一台机器上的两个不同(远程)用户使用一个存储库。
  • Git 实际上并没有提示 SSH 尝试使用哪个密钥 - Git 让本地 SSH 实现处理它,通常通过它自己的 /etc/ssh/config~/.ssh/config

标签: git ssh bitbucket


【解决方案1】:

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 用户没有该 repo 的相关权限。
  • 您正在尝试推送到指定了分支权限的分支,但您无权执行您正在尝试执行的操作。
  • 该密钥已作为“访问密钥”添加到 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 也是如此,但我认为特定于用户名的方法更简洁一些。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-06
    • 2023-01-05
    • 2021-06-06
    • 2017-07-02
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2011-01-26
    相关资源
    最近更新 更多