git从哪里检索凭证信息?

问题描述

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

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

我注意到account_1不是我一直在使用的user_id。 用户ID很熟悉,似乎已经很久了

这真是令人惊讶,因为我注意到我现有的其他回购协议似乎工作正常。

我与git config -l进行了核对,但帐户用户的电子邮件都正常。

有人知道会发生什么吗?

解决方法

Git没有。

我已经用ssh克隆了一个仓库...

处理授权和凭据的是 ssh 。 Git中没有内置ssh:Git仅运行 ssh。 1 因此,您只需运行ssh就可以诊断出该问题。

这是很常见的(因为GitHub除其他功能外),使用SSH通过git登录名对服务器进行身份验证,就像通过运行ssh -Tvvv [email protected]在调试输出中看到的那样。当您执行此类操作时,GitHub决定您的身份的方法是检查您发送的密钥。如果您有多个不同的密钥,并希望将一个特定的密钥发送到GitHub(或任何其他站点),则可以使用这种冗长的测试来查看实际发送的是哪个密钥。这样重复-v三次(-Tvvv等同于-T -v -v -v)可以使ssh调试输出的详细程度达到最大。 -T禁用pty分配,这在此处是适当的,因为GitHub仍然不允许您运行shell。

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


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