从命令行(通过 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 上失败。
GitHub 的支持立即确定了问题的根源:双因素授权。
要通过 https 在 shell 上使用 GitHub,请创建 OAuth 令牌。正如该页面所指出的,我确实必须从钥匙串中删除我的用户名和密码凭证,但是有了
osx-keychain
,令牌将作为密码存储,并且事情的工作方式与通过 https 完全一样,无需两步授权。
我没有
地址@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(个人访问令牌)
请注意,您可以在以下位置存储和加密您的凭据:
.netrc.gpg
(或 Windows 上的 _netrc.gpg
)。https://github
时是否可以跳过密码输入”。manager-core
的凭证助手,使用 Microsoft 跨平台 GCM(Git 凭证管理器)现在单击添加通用凭据并提供以下值
(1) 互联网或网络地址:git:https://tfs.donamain 名称 (2)用户名:您的用户名 (3)密码:你的密码
这应该可以解决问题
如果您之前存储了不同的凭据,则在 Windows 中可能会发生这种情况。转到凭据管理器并删除存储的 github 凭据
当我为 github 启用双向身份验证时,同样的事情也发生在我身上。我所做的事情来解决:
这样做将解决您的问题。
[仅限 Mac]
如果您需要删除您的身份验证,请使用
git credential-osxkeychain erase
host=github.com
protocol=https
在 Mac 上。
参见 https://help.github.com/articles/updating-credentials-from-the-osx-keychain/
以防万一这对其他人也有帮助,我登录了 mac 应用程序,命令行工作正常,但因为我随后打开了 2FA,所以我的命令返回了错误。我必须退出该应用程序,然后我可以按照 ele 的答案在我的命令中使用我的个人访问令牌here。
希望对某人有帮助!
它对我有用,希望能节省您的时间。最美好的祝愿。
适用于 Mac 和 Windows 前往 Github 代币生成器
然后在终端中导航到文件夹并执行
git push
它会要求输入用户名和密码,将个人访问令牌放入密码
注意 - 如果推送没有发生,请使用
git push --force
编辑在主目录中找到的 .gitconfig 文件
[url "https://<youruser>:<your token>@github.com/<org>"]
insteadOf = https://github.com/<org>
在 Windows 上,您可能会被防病毒软件或 Windows 防火墙悄悄阻止。暂时关闭这些服务并从远程源进行推/拉。