ChatGPT解决这个技术问题 Extra ChatGPT

GitHub:用户名或密码无效

我在 GitHub 上托管了一个项目。尝试将我的修改推送到主服务器时失败。我总是收到以下错误消息

Password for 'https://git@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://git@github.com/eurydyce/MDANSE.git/'

但是,将我的 ssh 密钥设置为 github 似乎没问题。确实,当我执行 ssh -T git@github.com 时,我得到

Hi eurydyce! You've successfully authenticated, but GitHub does not provide shell access.

这似乎表明从那方面一切都很好(eurydyce 是我的 github 用户名)。我严格遵循 github 上给出的说明和许多堆栈讨论的建议,但没有办法。你知道我可能做错了什么吗?

我不确定我是否应该发布答案(很有可能会被否决),因为在尝试使用“正确”(通过检查元素检查)密码进行多次尝试后,我通过更改 github 设置中的密码解决了此错误消息。
一些组织启用了 SAML SSO。在这种情况下,最好使用个人访问令牌。如果您已经登录,请重新登录并授予 Github Desktop/Sourcetree 权限

C
Community

启用两因素身份验证 (2FA) 后,您在尝试使用 git clonegit fetchgit pullgit push 时可能会看到如下内容:

$ git push origin master
Username for 'https://github.com': your_user_name
Password for 'https://your_user_name@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/your_user_name/repo_name.git/'

为什么会这样

GitHub Help documentation

启用 2FA 后,您需要输入个人访问令牌,而不是 2FA 代码和您的 GitHub 密码。 ...例如,当您在命令行上使用 git clone、git fetch、git pull 或 git push 等命令访问存储库时,您必须在提示输入密码时提供您的 GitHub 用户名和您的个人访问令牌用户名和密码。命令行提示在询问您的密码时不会指定您应该输入您的个人访问令牌。

如何修复它

生成个人访问令牌。 (有关为命令行创建个人访问令牌的详细指南。)复制个人访问令牌。重新尝试您尝试的命令并使用个人访问令牌代替您的密码。

相关问题:https://stackoverflow.com/a/21374369/101662


工藤的和赞成票;新的代币是我所需要的。还; “复制代码”包括额外的(无效)字符,所以我必须手动输入我的.... 20[?] 位随机密钥。
这是我的问题,在添加了我怀疑的 2 因素身份验证之后,但是缺少这方面的文档。感谢你的回答!
@BeauSmith:这比我们通常允许的编辑更具实质性。你基本上完全重写了这个答案。请将其发布为您自己的单独答案。另见What do you do if someone basically re-writes your whole answer?
让我们都请允许回滚或不由@Oliver在这里决定 - 无论哪种方式都有一个完美的论点
编辑在这里......因为似乎人们将此答案标记为正确(如我自己)到达此页面的问题与提问者的预期略有不同,我试图添加一些“谷歌果汁”术语并使答案更直观吸引其他寻求此解决方案的人可以找到它。努力让社区变得更好。 😀
V
VonC

https://git@github.com/eurydyce/MDANSE.git 不是 ssh 网址,而是 https 网址(需要您的 GitHub 帐户名,而不是“git”)。

尝试使用 ssh://git@github.com:eurydyce/MDANSE.git 或仅使用 git@github.com:eurydyce/MDANSE.git

git remote set-url origin git@github.com:eurydyce/MDANSE.git

OP Pellegrini Eric 添加:

这就是我在 ~/.gitconfig 文件中所做的,该文件当前包含以下条目 [remote "origin"] url=git@github.com:eurydyce/MDANSE.git

这不应该在您的全局配置中(~/ 中的那个)。
您可以在您的存储库中检查 git config -l:该 url 应该在 local 配置中声明:<yourrepo>/.git/config .

因此,在执行 git remote set-url 命令时,请确保您位于 repo 路径中。

Oliveranswer 中所述,如果激活 two-factor authentication (2FA),HTTPS URL 将不会使用用户名/密码。

在这种情况下,密码应该是 PAT (personal access token),如“Using a token on the command line”中所示。

这仅适用于 HTTPS URL,SSH 不受此限制的影响。


哎呀!你是对的,在我的本地配置中进行这些更改使一切正常。非常感谢。
完全看不懂这个答案
@Clo当然,哪个部分不够清晰,我该如何改进这个答案?
当我这样做时(用我的替换用户名和仓库名称),我得到“权限被拒绝(公钥)”。如果可能,我想使用用户名和密码登录。
@byronaltice 如果这是 SSH,则意味着您有一个 ~/.ssh/config%USERPROFILE%\.ssh\config 文件,其中有一个 github.com 条目。
S
Sabito 錆兎 stands with Ukraine

解决步骤:

Control Panel Credential Manager 点击 Windows Credentials 在 Generic Credential 部分,会有 git url,更新用户名和密码 重启 Git Bash 并尝试克隆


我在公司版本的 github 上遇到了这个问题(所以使用本地用户名/密码)。该解决方案修复了它。
在新窗口中,您可以使用您的语言搜索“Windows 凭据”或类似内容。它会弹出一个结果,你可以试试这个解决方案。
本地 github 的完美解决方案,公司要求您使用 https
我正在关注另一个线程来刷新凭据,但没有运气。您的解决方案完美运行
同样的问题:git@github.com:权限被拒绝(公钥)。致命:无法从远程存储库中读取。请确保您具有正确的访问权限并且存储库存在。
A
Ahmad Awais

如果像我一样,您刚刚更新了密码并运行了 git push 就遇到了这个问题,那么有一个超级简单的解决方法。

仅适用于 Mac 用户。您需要删除 GitHub 的 OSX 钥匙串访问条目。您可以通过运行以下命令通过终端执行此操作。

通过命令行删除您的凭据

通过命令行,您可以直接使用凭证助手擦除钥匙串条目。

为此,请键入以下命令:

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

# [Now Press Return]

如果成功,则不会打印任何内容。要测试它是否有效,请尝试从 GitHub 克隆存储库或再次运行您之前的操作,如我的情况 git push。如果系统提示您输入密码,则钥匙串条目已被删除。


对于 Windows:git credential-wincred 擦除主机=github.com 协议=https
我在 BitBucket 存储库中遇到了这个问题。这个使用 host=bitbucket.org 而不是 GitHub 的答案为我修复了它。
我更改了我的 Github 密码,之后 git pull 对我不起作用。这对我有用。
这是正确的答案,以防有人在最后一次 Github 身份验证更新后卡住以强制使用用户名/令牌而不是用户名/密码登录。
p
poke

当使用 https:// URL 连接到您的远程存储库时,Git 不会使用 SSH 作为身份验证,而是会尝试通过 HTTPS 进行基本身份验证。通常,您只使用不带用户名的 URL,例如 https://github.com/username/repository.git,然后 Git 会提示您输入用户名(您的 GitHub 用户名)和密码。

如果您使用 https://something@github.com/username/repository.git,那么您已经预设了 Git 将用于身份验证的用户名:something。由于您使用了 https://git@github.com,Git 将尝试使用您的密码当然不起作用的 git 用户名登录。因此,您将不得不改用 您的 用户名。

另一种方法实际上是使用 SSH 进行身份验证。这样您就不必一直输入密码;并且由于它似乎已经起作用,这就是您应该使用的。

为此,您需要更改远程 URL,以便 Git 知道它需要通过 SSH 连接。格式为:git@github.com:username/repository。要更新您的 URL,请使用以下命令:

git remote set-url origin git@github.com:username/repository

尝试您的命令时,我收到以下消息 warning: remote.origin.url has multiple values。这可能是因为我的 ~/.gitconfig 文件中已经有一个包含值 [remote "origin"] url=git@github.com:eurydyce/MDANSE.git 的远程标记。
我已经搜索了几个小时为什么我无法推动我的更改,这个答案终于给出了一个完美的解释并帮助我修复它,谢谢!
P
Paul

除了 git pull 还可以尝试 git pull origin master

我更改了密码,第一个命令给出了错误:

$ git pull
remote: Invalid username or password.
fatal: Authentication failed for ...

git pull origin master 之后,它要求输入密码并且似乎会自行更新


这就是我需要的!
这是最简单的方法,并且有效!
S
Sagar Jethi

2FA 已启用并收到错误远程:无效的用户名或密码。致命:身份验证失败

如果您在 GitHub 中设置了 2FA,您将需要输入个人访问令牌而不是 2FA 代码和您的 GitHub 密码。

如何修复它

https://github.com/settings/tokens 生成的令牌 复制个人访问令牌 现在在 git 操作期间输入个人访问令牌代替您的密码


就是这样!你能解释一下这里发生了什么吗?从现在开始,我是否需要令牌用于任何与 Github 相关的用途?
在此之后,然后按照@Anil_Reddy 的回答。
S
Shiva Rajkumar

只需尝试再次将其推送到您的分支。这将再次询问您的用户名和密码,因此您可以输入更改后的密码。这样您的新密码将再次存储在缓存中。


不知道为什么这会被否决。在我的情况下,我的凭据已更新,第二个 git push 提示进行适当的更新,如此答案所示。
不确定,您的意思是,它不是要求执行 git push origin master 的新凭据...
好的!如果您尝试 git clone 某事,但它会告诉您您的用户名/密码不正确,情况也是如此。如果最近发生了更改,只需再次运行 git clone <myprojecturl>,这一次它会要求您重新输入您的用户名和密码。
b
barbsan

我在从 bitbucket 克隆应用程序时得到这个:

Cloning into 'YourAppName'...
Password for 'https://youruser id': 
remote: Invalid username or password

我解决了。在这里您需要为您的用户名创建密码

单击您的个人资料和设置然后创建应用程序密码选择您的姓名密码将生成,将该密码粘贴到终端


S
Sazzad Hissain Khan

这个问题有时是由于密码错误而发生的。请检查您是否与 AD 密码(Active Directory 密码)相关联,并且您最近更改了 AD 密码但仍在尝试使用旧密码的 git 命令。

更新旧的 AD 密码

Control Panel > Credential Manager > Windows Credential > change github password with my new AD password

Z
ZaMy

我做了:

$git pull origin master

然后它要求输入 [用户名] 和 [密码],现在似乎工作正常。


这对我有用。我用 fetch 代替了 pull 但无论如何都没关系。凉爽的!
从 2021 年 8 月 13 日开始,这将不再支持
随意编辑和添加有效的@ZEHINZ!有一段时间没有遇到这个问题,所以我什至不确定更新的命令是什么!
A
Anil Reddy

我使用以下命令取得了成功。

git config --unset-all credential.helper
git config --global --unset-all credential.helper
git config --system --unset-all credential.helper

试着让我知道这些是否对你有用。


在此之后,在您拥有的任何 repo 中执行 git push origin master 应该再次提示您输入您的用户名(与以前相同)和密码(在此处使用个人访问令牌)。
D
Divyanshu Rawat

无需依赖生成个人访问令牌,然后尝试使用个人访问令牌代替您的密码。

快速解决方法是将您的远程 URL 设置为指向 ssh 而不是 https

这样做git remote set-url origin git@github.com:username/repository


P
Pang

尝试这个:

# git remote set-url origin git@github.com:username/repository

P
Pierre

如果您刚刚启用 2FA :

修改 ./git 隐藏文件夹中的隐藏 config 文件如下:

[remote "origin"]
    url = https://username:PUT_YOUR_2FA_TOKEN_HERE@github.com/project/project.git

但是如果该文件夹还不存在怎么办?我什至无法在 github 中执行 git clone 的私人回购
谢谢你。我在这个问题上花了两个多小时。你的回答拯救了我的一天
A
Arpan Saini

运行下面的命令,然后在每次推拉之后它会要求您输入用户名和密码。

  git config credential.helper ""

https://i.stack.imgur.com/69zOn.png

现在,当您拉/推时,您将被要求提供 git 凭据。天气您正在通过命令提示符或 Intellij Git 运行。


G
GreenAsJade

在 github 上禁用 2 因素身份验证对我有用。

我看到有一个已删除的答案说明了这一点,删除原因为“不回答问题”。如果它有效,那么我认为它回答了这个问题......


这很奇怪。我也发生了同样的事情。我刚刚禁用了双因素身份验证,它现在对我有用。 :)
P
Paras saini

您可能会收到此错误,因为您已更新密码。因此,在终端上,首先确保您从钥匙串中清除您的 GitHub 凭据,然后将您的更改推送到您的存储库,终端将询问您的用户名和密码。


B
BiAiB

如果您在这种情况下收到此错误消息:

使用 github 做企业

在 git config 中使用 credential.helper=wincred

使用您最近更改的 Windows 凭据

然后看看这个答案:https://stackoverflow.com/a/39608906/521257

Windows 将凭据存储在凭据管理器中,将其清除或更新。


A
Ajay Deepak

控制面板凭据管理器在任一选项中查找选项 webcredentials 和 windows 凭据,您会发现 github 凭据用正确的凭据修复它 打开新的 git bash 实例,您应该能够执行 git 命令。

这对我有用,我能够拉入并推送到我的远程仓库。


O
Olga Kliushkina

我遇到过同样的问题。我通过在客户端应用程序的 repo 设置中将远程分支的路径从 https://github.com/YourName/RepoName 更改为 git@github.com:YourName/RepoName.git 解决了这个问题。


您正在尝试使用 SSH 链接解决问题。我更喜欢使用 HTTPS,你的回答对我没有帮助。
A
Arthur Bowers

我经常遇到这个问题。确保你设置了 git --config user.name "" 而不是你的真实姓名,我已经做过几次了。


M
Muhammad Awais

我只是禁用双因素身份验证,然后重试。这个对我有用。


S
Sarah Dwyer

由于您可能希望为您的帐户启用 2FA,因此您可以设置一个 ssh 密钥,这样您就无需在每次将工作推送到 Github 时都输入您的 Github 凭据。

您可以在 documentation 中找到所有 ssh 设置步骤。首先,确保您当前没有任何带有 $ ls -al ~/.ssh 的 ssh 密钥(id_rsa.pub 等)


b
bchr02
G
Grim

使用 cmd-Greetings 在 Windows 上存在问题

在 Windows 上使用 cmd-Greetings 存在一个问题,它不允许您克隆私有存储库。删除本文档中描述的 cmd-greeting(关键字 Command Processor):

Known-Issues

我可以确认其他客户端,如 SourceTree、GitKraken、Tower 和 TortoiseGit 也受到了这个问题的影响。


L
Lolo

这可能发生的原因有很多。就我而言,没有一个解决方案有效。特别是,git pull origin master 没有要求我提供用户名和密码。

我在 Windows 上,最近更改了 github 密码。我正在使用凭据管理器来管理我的密码。这对我有用:

确认您正在使用 git 的凭据管理器: git config --list ... credential.helper=manager 以管理员身份运行新的命令提示符 使用 cmdkey 列出所有存储的凭据 /list from C:\WINDOWS\system32> 使用 cmdkey 删除 github 目标/delete:<目标名称>。在我的例子中,目标名称是 github..com 打开一个新的提示符并运行一个 git 命令。您应该得到一个弹出窗口,询问您的用户名和密码。提供新凭据后,它将不再要求您提供。


P
Preeti Maurya

最好和最简单的方法之一

刚刚在 github 上禁用了两种身份验证转到控制面板-> Windows 凭据-> 单击添加通用凭据

只需手动输入 Github 的添加 URL:hhtps://www.github.com 用户名:您的用户名密码:您的密码然后保存到它

3)在使用 git push 命令时,您必须在 Github 上生成一个令牌,再回到 Github > 设置> 开发人员设置> 生成令牌

希望这会有所帮助....


S
Sandesh Jayaprakash

这个解决方案对我有用:

打开控制面板转到凭据管理器单击窗口凭据在通用凭据部分,会有git url,更新用户名和密码重新启动Git Bash并尝试克隆


这个答案重复了一个没有用的现有答案。当您拥有足够的声誉(我相信是 15)时,您可以投票选出您认为有用的答案。投票将是正确的答案,而不是添加这个重复的答案。