GitHub 身份验证通过 https 失败,返回错误的电子邮件地址

Posted

技术标签:

【中文标题】GitHub 身份验证通过 https 失败,返回错误的电子邮件地址【英文标题】:GitHub authentication failing over https, returning wrong email address 【发布时间】:2014-01-21 17:33:34 【问题描述】:

从命令行(通过 https,而不是 ssh)使用 GitHub 发起推送或任何其他操作,调用用户名和密码不仅会失败,而且会返回

Username for 'https://github.com': username
Password for 'https://username@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/username/repository.git/'

我没有@github.com 地址。密码和用户名正确。

我知道我可以切换到 SSH 并使用密钥,但这并不能解释为什么身份验证在 https 上失败。

【问题讨论】:

文档 git-scm.com/book/en/… git-config - 获取和设置存储库或全局选项 git-scm.com/docs/git-config 【参考方案1】:

GitHub 的支持立即确定了问题的根源:双因素授权。

要在 shell 上通过 https 使用 GitHub,create an OAuth token。正如页面所述,我确实必须从 Keychain 中删除我的用户名和密码凭据,但是在 osx-keychain 到位后,令牌存储为密码,并且在没有两因素授权的情况下,事情就像在 https 上一样工作。

【讨论】:

+1。您还可以在加密的 netrc 中使用 PAT(个人访问令牌):***.com/a/18607931/6309 PAT 和 OAuth 有什么区别? @lindhe OAuth 令牌是一种令牌,在这种情况下,PAT 是一个 OAauth 令牌。 为什么没有关于此的消息而不是错误的身份验证错误?我怎么会知道这个【参考方案2】:

我没有@github.com 地址

您不必这样做:@ 是用户名:密码和域之间的分隔符。 这不是电子邮件地址。

完整的 GitHub https 网址是:

https://username:password@github.com/username/reponame.git

如果没有密码(然后会在命令行上询问),则会给出:

https://username@github.com/username/reponame.git

但同样,username@github.com 不是电子邮件地址,只是凭据的第一部分。

确保usernamereponame 的大小写正确:it is case sensitive。

请注意,如果您不想在 url 中明确说明凭据,可以将凭据存储和加密在 .netrc.gpg(或 Windows 上的 _netrc.gpg)中。 见“Is there a way to skip password typing when using https://github”。

【讨论】:

您也可以不输入密码,每次都输入密码。在这种情况下,它将是https://username@github.com/username/reponame.git 哦,有道理。谢谢你。我知道区分大小写,并且我确信我提供的用户名和密码是正确的。 (他们可以很好地登录网站。)a @ele 是的,但您的密码是否包含特殊字符(如! * ' ( ) ; : @ & = + $ , / ? # [ ])?它们需要“百分比编码”(en.wikipedia.org/wiki/Percent-encoding)。 密码是字母数字。当我下次在机器旁时,我会看到“git remote -v”给出了什么,但听起来我接下来可能需要联系 GitHub 支持。 @ele 首先尝试 .netrc 方法(甚至不加密,仅用于测试)。如果这不起作用,GitHub 支持确实是下一步。【参考方案3】: 转到凭据管理器 => Windows 管理器 删除所有与 tfs 相关的内容

现在点击添加通用凭据并提供以下值

(1) Internet或网络地址:git:https://tfs.donamainname (2) 用户名​​:您的用户名 (3) 密码:您的密码

这应该可以解决它

【讨论】:

哇。如果您输入错误,我喜欢它如何存储错误密码。然后你必须手动更新或删除它【参考方案4】:

如果您之前存储了不同的凭据,则可能会在 Windows 中发生这种情况。转到凭据管理器并删除存储的 github 凭据

【讨论】:

也可以直接在Windows Credential Manager中修改密码为新密码。【参考方案5】:

[仅限 Mac]

如果您需要删除您的身份验证,请使用

git credential-osxkeychain erase
host=github.com
protocol=https

在 Mac 上。

见https://help.github.com/articles/updating-credentials-from-the-osx-keychain/

【讨论】:

【参考方案6】:

当我为 github 启用 2 路身份验证时,我也发生了同样的事情。我解决的问题:

获取您的个人访问令牌。如果尚不可用,您必须检查并生成。链接:https://github.com/settings/tokens 转到本地并删除文件夹并从 github 重新克隆分支。 现在尝试您之前尝试的命令,即:git pull origin master 输入用户名和密码,粘贴生成的令牌,不要忘记将该令牌保存在某处,以便在需要时重复使用。

这样做将解决您的问题。

【讨论】:

很好的标注 - 这发生在我的 mac => had to regenerate my PAT 如果我们需要以前生成的令牌中不存在的权限,我们必须生成令牌。此外,如果我们丢失了之前的令牌,我们可以生成这个新令牌并用作验证密码,而不是我们原来的 git 密码。【参考方案7】:

以防万一这对其他人也有帮助,我已登录 mac 应用程序,命令行工作正常,但因为我随后打开了 2FA,我的命令返回错误。我必须退出该应用程序,然后我可以根据 ele 的回答 here 在我的命令中使用我的个人访问令牌。

希望对某人有所帮助!

【讨论】:

【参考方案8】:

在 Windows 上,您可能会被防病毒软件或 Windows 防火墙静默阻止。暂时关闭这些服务并从远程源推/拉。

【讨论】:

以上是关于GitHub 身份验证通过 https 失败,返回错误的电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章

通过添加从另一个请求返回的身份验证令牌来修改 http 代理请求

无法克隆私有存储库 github:身份验证失败

Github - 致命身份验证失败 - 但我仍然可以连接?

ajax 在 asp.net webforms 中返回 json 对象的身份验证失败

Azure 身份验证受众验证失败

Golang 和 MongoDb 远程访问失败(服务器在 SASL 身份验证步骤返回错误:身份验证失败。)