【问题标题】:How do I configure `hub create` SSH credentials?如何配置 `hub create` SSH 凭据?
【发布时间】:2020-11-28 22:20:13
【问题描述】:

我在 github 中配置了一个 SSH 密钥,据我所知,它已加载到 SSH,但是当我运行 hub create 时出现错误

[:~/already/initialized/repo] $ hub create -p
Error creating repository: Unauthorized (HTTP 401)
Bad credentials

如何检查 git 为何似乎在使用 HTTP,以及它是否正确加载了我的 SSH 密钥?

【问题讨论】:

    标签: git authentication ssh


    【解决方案1】:

    hub 确实使用 SSH,但并非总是如此。

    commands/clone.go所见

    ''git:'' 协议将用于克隆公共存储库,而 SSH 协议将用于私有存储库和您推送的存储库 访问。
    或者,可以将集线器配置为对所有内容使用 HTTPS 协议。
    参见hub(1)的“HTTPS instead of git protocol”和“HUB_PROTOCOL”。

    issue 1644 Fatal: Could not read Username for "https://github.com"

    这往往是 Hub 用户感到困惑的原因:在执行诸如 hub clonehub fork ... hub push 之类的操作时,GitHub 有两种 身份验证方法在起作用,而且它们没有任何关系!
    一个可能没问题,但另一个可能配置错误(反之亦然)。

    • 第一种身份验证方法是 git 用于将 git 提交推送到 repos 或从私有 repos 克隆/获取的方法,它与 hub 没有任何关系或影响:
      • SSH
      • HTTPS(如果您已激活 2FA,则使用用户名/密码或 PAT、个人访问令牌)
    • 第二种身份验证方法是一种用于访问 GitHub API 的集线器。这与上述 git 协议身份验证完全不同,原因如下:
      • 即使配置了用于 github.com 的 SSH 密钥,它也不能被集线器使用,因为 GitHub API 只能通过 HTTPS 访问。
      • 即使在 git credential helper 中配置了密码或个人访问令牌以用于 HTTPS git 遥控器,在大多数情况下它也不能被 hub 使用,原因如下:
        • 大多数 GitHub API 无法使用您的实际 GitHub 密码访问,而必须使用 Oauth 令牌(也称为个人访问令牌)进行访问;
        • 为克隆/推送到 git 存储库而配置的个人访问令牌不能用于所有 GitHub API 操作,因为它们可能需要默认存储库范围之外的权限,通常用于创建 git 克隆的令牌。

    GameKyuubi 确认 in the comments 修复:

    已通过删除 ~/.config/hub 修复。
    我有一个错误/过期的令牌

    【讨论】:

    • 通过删除 ~/.config/hub 修复。我有一个错误/过期的令牌。
    【解决方案2】:

    hub 命令与 GitHub 的 HTTP API 交互。它不使用ssh。您可以在hub man page 的“配置”部分了解它如何处理身份验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 2019-10-17
      • 2011-03-19
      • 2011-09-23
      • 2016-05-05
      • 2021-02-12
      相关资源
      最近更新 更多