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
不是电子邮件地址,只是凭据的第一部分。
确保username
和reponame
的大小写正确: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 代理请求