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

问题描述 投票:0回答:11

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

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

我没有

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

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

git github https
11个回答
180
投票

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

要通过 https 在 shell 上使用 GitHub,请创建 OAuth 令牌。正如该页面所指出的,我确实必须从钥匙串中删除我的用户名和密码凭证,但是有了

osx-keychain
,令牌将作为密码存储,并且事情的工作方式与通过 https 完全一样,无需两步授权。


26
投票

我没有

@github.com
地址

您不必这样做:

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

完整的 GitHub https 网址为:

# 2014:
https://username:[email protected]/username/reponame.git

# 2021+:
https://username:[email protected]/username/reponame.git

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

https://[email protected]/username/reponame.git

但是,

[email protected]
不是电子邮件地址,只是凭据的第一部分。

确保您的

username
reponame
的大小写正确:区分大小写


自2021年8月起,GitHub在GitHub.com上验证Git操作时不再接受帐户密码。
PAT(个人访问令牌)


请注意,您可以在以下位置存储和加密您的凭据:

  • 2014:如果您不想在 URL 中明确显示所述凭据,请使用
    .netrc.gpg
    (或 Windows 上的
    _netrc.gpg
    )。
    请参阅“使用
    https://github
    时是否可以跳过密码输入”。
  • 2021+:名为
    manager-core
    的凭证助手,使用 Microsoft 跨平台 GCM(Git 凭证管理器)

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

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

    这应该可以解决问题


10
投票

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


10
投票

当我为 github 启用双向身份验证时,同样的事情也发生在我身上。我所做的事情来解决:

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

这样做将解决您的问题。


9
投票

[仅限 Mac]

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

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

在 Mac 上。

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


6
投票

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

希望对某人有帮助!


2
投票
  • 前往 https://github.com/settings/tokens 生成您的代币
  • 生成您的令牌并安全存储
  • 现在尝试将你的代码推送到github
  • 您必须提供两次凭据。第一次提供您的 gmail 和密码,第二次提供您的 用户名和生成的令牌,而不是密码(在密码字段)。
  • 另一件事是,如果你转到你的 github 个人资料,那么你会在 url 找到你的用户名

它对我有用,希望能节省您的时间。最美好的祝愿。


0
投票
  • 适用于 Mac 和 Windows 前往 Github 代币生成器

    • 生成token并复制
  • 然后在终端中导航到文件夹并执行

    git push

  • 它会要求输入用户名和密码,将个人访问令牌放入密码

注意 - 如果推送没有发生,请使用

git push --force


0
投票

编辑在主目录中找到的 .gitconfig 文件

[url "https://<youruser>:<your token>@github.com/<org>"]
        insteadOf = https://github.com/<org>

-2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.