【问题标题】:where does git retrieve credential information from?git 从哪里检索凭证信息?
【发布时间】:2021-01-19 00:43:26
【问题描述】:

我已经用 ssh 克隆了一个 repo,做了一些更改并尝试推送,但我得到了

remote: Permission to repo.git denied to <account_1>.

我注意到account_1 不是我一直使用的user_id。 用户id很熟悉,好像是很久以前遗留下来的

这非常令人惊讶,因为我注意到我的其他现有存储库似乎运行良好。

我检查了git config -l,但帐户用户电子邮件都很好。

有人知道会发生什么吗?

【问题讨论】:

  • 我相信它默认读取 .ssh/id_rsa,因此它会尝试将其与远程密钥匹配。但我可能误会你了。
  • 检查你的遥控器的网址:用于连接遥控器的帐户是在那里定义的。
  • user.nameuser.email 用于提交中的 authorcommitter 字段,它们与您用于与远程通信的凭据无关。

标签: git ssh-keys


【解决方案1】:

Git 没有。

我已经用 ssh 克隆了一个 repo ...

处理授权和凭据的是 ssh。 Git 没有内置 ssh:Git 只是 runs ssh。1 所以这意味着你可以通过运行 ssh 来诊断这个问题。

这是很常见的——因为 GitHub 也这样做了——使用 SSH 来使用 git 登录对服务器进行身份验证,正如您通过运行 ssh -Tvvv git@github.com 将在调试输出中看到的那样。当你做这种事情时,GitHub 决定你是谁的方式是检查你发送的密钥。如果您有多个不同的密钥并希望将一个特定的密钥发送到 GitHub(或任何其他站点),您可以使用这种详细测试查看您实际发送的密钥。像这样重复-v 三次——-Tvvv 等同于-T -v -v -v——将 ssh 调试输出的详细程度提高到最大。 -T 禁用 pty 分配,这在这里很合适,因为 GitHub 无论如何都不允许您运行 shell。

要了解如何配置您自己的 ssh,请参阅您特定系统的 ssh 文档,因为这会有所不同。通常,它们中的大多数使用主目录中或主目录下的目录(或文件夹,如果您更喜欢该术语)来存储配置信息和密钥:例如$HOME/.ssh or $XDG_CONFIG_HOME/.config/ssh


1Git 确实 内置了 libcurl,但 https 身份验证更复杂,因此通常 Git 在这里依赖于特定于操作系统的帮助程序。无论出于何种原因,Https 身份验证都比 ssh 多样化得多;使用 ssh,您通常只需说在此系统上使用此用户名,并且可以通过一次 ssh 调用提供所有参数。使用 libcurl,它......更混乱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    • 2012-01-23
    • 2013-04-24
    相关资源
    最近更新 更多