GitHub:无效的用户名或密码


401

我有一个托管在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设置中的密码解决了该错误消息。
水果

Answers:


274

https://git@github.com/eurydyce/MDANSE.git不是ssh URL,而是一个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佩莱格里尼埃里克补充说:

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

这不应该位于您的全局配置(中的~/)中。
您可以签git config -l入存储库:该URL应该在本地配置中声明:<yourrepo>/.git/config

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


正如指出的奥利弗回答所述,如果激活了双重身份验证(2FA),则HTTPS URL将不使用用户名/密码。

在这种情况下,密码应为 PAT(个人访问令牌),如“ 在命令行上使用令牌 ”中所示。

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


哎呀!没错,在我的本地配置中进行这些更改使一切正常。非常感谢。
Eurydice 2015年

78
根本不理解这个答案
Cloud

@Clo当然,缺少什么部分,我该如何改善这个答案?
VonC

我有https克隆链接,该链接无效。但是我替换为git @ url,它开始起作用。这可能是什么原因?我也从我的Mac钥匙串中删除了一些github条目。这可能有关吗?但是,我是通过配置密钥通过ssh使用它的。任何指针都将对此有所帮助。
cg

1
@byronaltice如果是SSH,则表示您有一个~/.ssh/config%USERPROFILE%\.ssh\config文件,其中包含一个github.com条目。
VonC

1010

实现双因素认证(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帮助文档中

启用2FA后,您需要输入个人访问令牌,而不是2FA代码和GitHub密码。

...

例如,当您访问使用类似的命令在命令行中使用Git存储库git clonegit fetchgit pullgit push使用HTTPS URL,则必须提供您的GitHub用户名和当系统提示输入用户名和密码令牌您的个人访问。命令行提示不会要求您输入密码时指定您的个人访问令牌。

如何修复

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

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


14
工藤和赞誉;我需要新的代币。也; “复制代码”中包含其他(无效)字符,因此我必须手动输入我的.... 20 [?]数字随机密钥。
th3byrdm4n 16-4-27

7
这是我的问题,添加了我怀疑的2因子验证后,但是缺少有关此问题的文档。感谢您的回答!
Pogrindis '16

11
@BeauSmith:这种编辑方式比我们通常所允许的更具实质性。您基本上完全重写了这个答案。请张贴为您自己的单独答案。另请参见如果有人基本上重写了整个答案该怎么办?
马丁·彼得斯

8
让我们所有人都允许决定是否回滚@Oliver在这里做出的决定-不管怎么说,都有一个非常合理的论据
Flexo

10
这里的编辑器…似乎将这个答案标记为正确的人们(例如我自己)到达此页面,是因为问题与提问者所期望的略有不同,我试图添加一些“ google juice”字词,并使答案在视觉上更加直观吸引其他寻求该解决方案的人找到它。努力使社区更好。😀–
博·史密斯

85

解决步骤:

  1. 控制面板
  2. 凭证管理员
  3. 单击窗口凭证
  4. 在“通用凭据”部分中,会有git url,更新用户名和密码
  5. 重新启动Git Bash并尝试克隆

4
我在github的公司版本中遇到了这个问题(因此使用本地用户名/密码)。此解决方案将其修复。
mkennedy

在新窗口中,您可以搜索“ Windows凭据”或您所用语言的类似内容。它会弹出一个结果,您可以尝试此解决方案。
查尔斯·坦波

1
前提github的完美解决方案,公司必须让您使用https
avi.elkharrat

56

如果像我一样,您刚刚更新密码并遇到git push了这个问题,那么这里有一个超级简单的修复程序。

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

通过命令行删除凭据

通过命令行,您可以直接使用凭据帮助器来擦除钥匙串条目。

为此,请键入以下命令:

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

# [Now Press Return]

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


2
对于Windows:git credential-wincred擦除主机= github.com协议= https
Juan Uribe

我在BitBucket存储库上遇到了此问题。这个答案host=bitbucket.org而不是GitHub为我修复了。
gutch

26

当使用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
Eurydice 2015年

18

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


4
不知道为什么这会引起反对。就我而言,我的凭据已更新,并且第二个git push提示提示进行适当的更新,如此答案所示。
Digital Trauma

不确定,您的意思是,它不要求执行新凭据git push origin master...
Betlista,

13

而不是git pull也尝试git pull origin master

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

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

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


7

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

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

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


5

我从bitbucket克隆应用程序时遇到了这个问题:

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

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

  1. 点击您的个人资料和设置 点击您的个人资料和设置

  2. 然后创建应用程序密码选择您的名称密码将生成,将该密码粘贴到终端 创建应用密码


4

在github上禁用2因子认证对我有用。

我看到有一个删除的答案这样说,删除原因为“不回答该问题”。如果可行,那么我认为它可以回答问题...


真奇怪 我也一样 我只是禁用了双重身份验证,现在它对我有效。:)
abhijeetps

截至2020年6月,这对我有用。谢谢!
Gcamara14

4

我做了:

$git pull origin master

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


这对我有用。我已经使用访存而不是拉取,但是无论如何都没关系。凉!
atereshkov

2

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

  • 使用 github进行创业
  • 使用credential.helper = wincred在git config中
  • 使用Windows凭据,你改变了最近

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

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


1

您可能会收到此错误,因为您已经更新了密码。因此,在Terminal上,首先请确保您从钥匙串中清除了GitHub凭据,然后将所做的更改推送到您的仓库中,Terminal将要求您提供用户名和密码。


1

我遇到过同样的问题。而我通过改变远程分支的路径解决它https://github.com/YourName/RepoName,以git@github.com:YourName/RepoName.git在客户端应用程序的回购的设置。



0

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

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


-1
  1. 控制面板
  2. 凭证管理员
  3. 查找选项Webcredentials和Windows凭据
  4. 在任一版本中,您都会找到github凭据,并使用正确的凭据对其进行了修复
  5. 打开git bash的新实例,您应该能够执行git命令。

这对我有用,我能够将其推入远程仓库。



-3

此解决方案为我工作:

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

1
该答案重复了一个没有用的现有答案。当您有足够的声誉时(我相信是15个),您可以投票认为有用的答案。投票将是正确的答案,而不是添加重复的答案。
AdrianHHH
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.