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


128

从命令行(通过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/zh/…git-config-获取并设置存储库或全局选项git-scm.com/docs/git-config
John Smith,

Answers:


171

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

要在带https的外壳上使用GitHub,请创建OAuth令牌。如页面上所述,我确实必须从钥匙串中删除我的用户名和密码凭据,但是osx-keychain在适当的位置,令牌被存储为密码,并且在没有两步授权的情况下,其工作原理与通过https时一样。


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

PAT和OAuth有什么区别?
lindhe

@lindhe OAuth令牌是令牌的一种,在这种情况下,PAT是OAauth令牌。
凯里·琼斯

22

我没有@github.com地址

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

完整的GitHub https网址为:

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

如果没有密码(然后将在命令行中询问密码),则会得到:

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

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

确保您的username和的大小写reponame正确:区分大小写

请注意,如果您不想在URL中以明文形式存储上述凭据,则可以在.netrc.gpg(或_netrc.gpgWindows)中存储和加密凭据。
请参阅“使用时是否可以跳过密码输入https://github ”。


您也可以不输入密码,每次都输入密码。那样的话https://username@github.com/username/reponame.git
Mark Hildreth 2014年

哦,有道理。谢谢。我知道区分大小写,并且我确定我提供的用户名和密码是正确的。(他们可以正常登录网站。)a
ele 2014年

2
@ele是的,但是您的密码是否包含特殊字符(例如! * ' ( ) ; : @ & = + $ , / ? # [ ])?它们将需要进行“百分比编码”(en.wikipedia.org/wiki/Percent-encoding)。
VonC 2014年

密码是字母数字。当我下次在机器上时,我会看到'git remote -v'给出的内容,但听起来我可能需要联系下GitHub支持。
ele 2014年

@ele首先尝试.netrc方法(甚至不加密,仅用于测试)。如果这不起作用,那么下一步就是GitHub支持。
VonC 2014年

21
  • 转到凭据管理器=> Windows管理器
  • 删除与tfs相关的所有内容
  • 现在单击添加通用证书,并提供以下值

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

    这应该解决它


哇。如果您输入错误的密码,我喜欢它如何存储错误的密码。然后,您必须手动对其进行更新或删除
Kolob Canyon

10

如果您之前存储了其他凭据,则可能在Windows中发生。转到凭证管理器并删除存储的github凭证


1
也可以将Windows凭据管理器中的密码直接编辑为新密码。
Spenhouet


8

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

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

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


好的标注-在Mac上发生在我身上=> 必须重新生成我的PAT
SliverNinja-MSFT

如果我们需要以前生成的令牌中不存在的权限,则必须生成令牌。同样,如果我们丢失了先前的令牌,我们可以生成此新令牌并用作密码进行身份验证,而不是原始的git密码。
Mohd Belal

5

以防万一这对其他人也有帮助,我登录了Mac应用程序,命令行正常运行,但是由于我随后打开了2FA,所以我的命令返回了错误。我必须退出该应用程序,然后才能按照ele的回答命令中使用我的个人访问令牌。

希望能对某人有所帮助!


-2

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.