git 从哪里检索凭据信息?

where does git retrieve credential information from?

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

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

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

这真是一个惊喜,因为我注意到我的其他现有存储库似乎工作正常。

我检查过 git config -l 但帐户用户电子邮件都没有问题。

有人知道会发生什么吗?

Git 没有。

I have cloned a repo with ssh ...

它是 ssh 处理授权和凭据。 Git 没有内置 ssh:Git 只是 运行s ssh.1 这样意味着你可以通过 运行ning 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 依赖于 OS-specific 助手。无论出于何种原因,https 身份验证比 ssh 更加多样化;使用 ssh,您通常只需说 在此系统上使用此用户名 并且可以通过一次 ssh 调用提供所有参数。有了 libcurl,它就……更乱了。