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

ele*_*ele 120 git https github

从命令行(通过https,而不是ssh)启动推送或任何其他操作,调用用户名和密码不仅会失败,但是当它发生时,它会返回

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/'
Run Code Online (Sandbox Code Playgroud)

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

我知道我可以切换到SSH并使用密钥,但这并不能解决验证失败的原因.

ele*_*ele 162

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

要通过https在shell上使用GitHub,请创建OAuth令牌.正如页面所述,我确实必须从Keychain中删除我的用户名和密码凭据,但是osx-keychain在适当的位置,令牌将作为密码存储,并且其功能与没有双因素授权的https完全相同.

  • +1.您还可以在加密的netrc中使用PAT(个人访问令牌):http://stackoverflow.com/a/18607931/6309 (4认同)

Von*_*onC 22

我没有@github.com地址

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

一个完整的GitHub https网址将是:

https://username:password@github.com/username/reponame.git
Run Code Online (Sandbox Code Playgroud)

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

https://username@github.com/username/reponame.git
Run Code Online (Sandbox Code Playgroud)

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

确保您的情况usernamereponame是正确的:它是区分大小写.

请注意,如果您不想在URL中清除所述凭据,则可以在.netrc.gpg(或_netrc.gpg在Windows上)存储和加密凭据.
请参阅"使用时是否有办法跳过密码输入https://github ".

  • @ele是的,但你的密码是否包含特殊字符(如`!*'();:@&= + $,/?#[]`)?他们需要"百分比编码"(http://en.wikipedia.org/wiki/Percent-encoding). (2认同)

小智 19

  • 转到Credential Manager => Windows Manager
  • 删除与tfs相关的所有内容
  • 现在单击" 添加通用凭据"并提供以下值

    (1)互联网或网络地址:git:https://tfs.donamain name(2)用户名:您的用户名(3)密码:您的密码

    这应该解决它


Dan*_*ark 9

[仅限Mac]

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

git credential-osxkeychain erase
host=github.com
protocol=https
Run Code Online (Sandbox Code Playgroud)

在Mac上.

请参阅https://help.github.com/articles/updating-credentials-from-the-osx-keychain/


Ran*_*dom 9

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


Joe*_*mer 5

只是因为这也帮助了其他人,我登录了mac app,命令行工作正常,但是因为我打开2FA,我的命令返回错误.我必须退出应用程序,然后我可以在我的命令中使用我的个人访问令牌,按照这里的答案.

希望这有助于某人!


小智 5

当我为github启用2-way身份验证时,我也发生了同样的事情。我要做解决的事情:

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

这样做可以解决您的问题。