我在 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 上给出的说明和许多堆栈讨论的建议,但没有办法。你知道我可能做错了什么吗?
启用两因素身份验证 (2FA) 后,您在尝试使用 git clone
、git fetch
、git pull
或 git 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/'
为什么会这样
启用 2FA 后,您需要输入个人访问令牌,而不是 2FA 代码和您的 GitHub 密码。 ...例如,当您在命令行上使用 git clone、git fetch、git pull 或 git push 等命令访问存储库时,您必须在提示输入密码时提供您的 GitHub 用户名和您的个人访问令牌用户名和密码。命令行提示在询问您的密码时不会指定您应该输入您的个人访问令牌。
如何修复它
生成个人访问令牌。 (有关为命令行创建个人访问令牌的详细指南。)复制个人访问令牌。重新尝试您尝试的命令并使用个人访问令牌代替您的密码。
相关问题:https://stackoverflow.com/a/21374369/101662
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
这就是我在 ~/.gitconfig 文件中所做的,该文件当前包含以下条目 [remote "origin"] url=git@github.com:eurydyce/MDANSE.git
这不应该在您的全局配置中(~/
中的那个)。
您可以在您的存储库中检查 git config -l
:该 url 应该在 local 配置中声明:<yourrepo>/.git/config
.
因此,在执行 git remote set-url
命令时,请确保您位于 repo 路径中。
如 Oliver 的 answer 中所述,如果激活 two-factor authentication (2FA),HTTPS URL 将不会使用用户名/密码。
在这种情况下,密码应该是 PAT (personal access token),如“Using a token on the command line”中所示。
这仅适用于 HTTPS URL,SSH 不受此限制的影响。
~/.ssh/config
或 %USERPROFILE%\.ssh\config
文件,其中有一个 github.com
条目。
解决步骤:
Control Panel Credential Manager 点击 Windows Credentials 在 Generic Credential 部分,会有 git url,更新用户名和密码 重启 Git Bash 并尝试克隆
如果像我一样,您刚刚更新了密码并运行了 git push 就遇到了这个问题,那么有一个超级简单的解决方法。
仅适用于 Mac 用户。您需要删除 GitHub 的 OSX 钥匙串访问条目。您可以通过运行以下命令通过终端执行此操作。
通过命令行删除您的凭据
通过命令行,您可以直接使用凭证助手擦除钥匙串条目。
为此,请键入以下命令:
git credential-osxkeychain erase
host=github.com
protocol=https
# [Now Press Return]
如果成功,则不会打印任何内容。要测试它是否有效,请尝试从 GitHub 克隆存储库或再次运行您之前的操作,如我的情况 git push
。如果系统提示您输入密码,则钥匙串条目已被删除。
host=bitbucket.org
而不是 GitHub 的答案为我修复了它。
当使用 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
的远程标记。
除了 git pull
还可以尝试 git pull origin master
我更改了密码,第一个命令给出了错误:
$ git pull
remote: Invalid username or password.
fatal: Authentication failed for ...
在 git pull origin master
之后,它要求输入密码并且似乎会自行更新
2FA 已启用并收到错误远程:无效的用户名或密码。致命:身份验证失败
如果您在 GitHub 中设置了 2FA,您将需要输入个人访问令牌而不是 2FA 代码和您的 GitHub 密码。
如何修复它
https://github.com/settings/tokens 生成的令牌 复制个人访问令牌 现在在 git 操作期间输入个人访问令牌代替您的密码
只需尝试再次将其推送到您的分支。这将再次询问您的用户名和密码,因此您可以输入更改后的密码。这样您的新密码将再次存储在缓存中。
git push
提示进行适当的更新,如此答案所示。
git push origin master
的新凭据...
git clone
某事,但它会告诉您您的用户名/密码不正确,情况也是如此。如果最近发生了更改,只需再次运行 git clone <myprojecturl>
,这一次它会要求您重新输入您的用户名和密码。
我在从 bitbucket 克隆应用程序时得到这个:
Cloning into 'YourAppName'...
Password for 'https://youruser id':
remote: Invalid username or password
我解决了。在这里您需要为您的用户名创建密码
单击您的个人资料和设置然后创建应用程序密码选择您的姓名密码将生成,将该密码粘贴到终端
这个问题有时是由于密码错误而发生的。请检查您是否与 AD 密码(Active Directory 密码)相关联,并且您最近更改了 AD 密码但仍在尝试使用旧密码的 git 命令。
更新旧的 AD 密码
Control Panel > Credential Manager > Windows Credential > change github password with my new AD password
我做了:
$git pull origin master
然后它要求输入 [用户名] 和 [密码],现在似乎工作正常。
我使用以下命令取得了成功。
git config --unset-all credential.helper
git config --global --unset-all credential.helper
git config --system --unset-all credential.helper
试着让我知道这些是否对你有用。
git push origin master
应该再次提示您输入您的用户名(与以前相同)和密码(在此处使用个人访问令牌)。
无需依赖生成个人访问令牌,然后尝试使用个人访问令牌代替您的密码。
快速解决方法是将您的远程 URL 设置为指向 ssh
而不是 https
。
这样做git remote set-url origin git@github.com:username/repository
尝试这个:
# git remote set-url origin git@github.com:username/repository
如果您刚刚启用 2FA :
修改 ./git
隐藏文件夹中的隐藏 config
文件如下:
[remote "origin"]
url = https://username:PUT_YOUR_2FA_TOKEN_HERE@github.com/project/project.git
git clone
的私人回购
运行下面的命令,然后在每次推拉之后它会要求您输入用户名和密码。
git config credential.helper ""
https://i.stack.imgur.com/69zOn.png
现在,当您拉/推时,您将被要求提供 git 凭据。天气您正在通过命令提示符或 Intellij Git 运行。
在 github 上禁用 2 因素身份验证对我有用。
我看到有一个已删除的答案说明了这一点,删除原因为“不回答问题”。如果它有效,那么我认为它回答了这个问题......
您可能会收到此错误,因为您已更新密码。因此,在终端上,首先确保您从钥匙串中清除您的 GitHub 凭据,然后将您的更改推送到您的存储库,终端将询问您的用户名和密码。
如果您在这种情况下收到此错误消息:
使用 github 做企业
在 git config 中使用 credential.helper=wincred
使用您最近更改的 Windows 凭据
然后看看这个答案:https://stackoverflow.com/a/39608906/521257
Windows 将凭据存储在凭据管理器中,将其清除或更新。
控制面板凭据管理器在任一选项中查找选项 webcredentials 和 windows 凭据,您会发现 github 凭据用正确的凭据修复它 打开新的 git bash 实例,您应该能够执行 git 命令。
这对我有用,我能够拉入并推送到我的远程仓库。
我遇到过同样的问题。我通过在客户端应用程序的 repo 设置中将远程分支的路径从 https://github.com/YourName/RepoName
更改为 git@github.com:YourName/RepoName.git
解决了这个问题。
我经常遇到这个问题。确保你设置了 git --config user.name "" 而不是你的真实姓名,我已经做过几次了。
我只是禁用双因素身份验证,然后重试。这个对我有用。
由于您可能希望为您的帐户启用 2FA,因此您可以设置一个 ssh 密钥,这样您就无需在每次将工作推送到 Github 时都输入您的 Github 凭据。
您可以在 documentation 中找到所有 ssh 设置步骤。首先,确保您当前没有任何带有 $ ls -al ~/.ssh
的 ssh 密钥(id_rsa.pub 等)
使用 cmd-Greetings 在 Windows 上存在问题
在 Windows 上使用 cmd-Greetings 存在一个问题,它不允许您克隆私有存储库。删除本文档中描述的 cmd-greeting(关键字 Command Processor
):
我可以确认其他客户端,如 SourceTree、GitKraken、Tower 和 TortoiseGit 也受到了这个问题的影响。
这可能发生的原因有很多。就我而言,没有一个解决方案有效。特别是,git pull origin master
没有要求我提供用户名和密码。
我在 Windows 上,最近更改了 github 密码。我正在使用凭据管理器来管理我的密码。这对我有用:
确认您正在使用 git 的凭据管理器: git config --list ... credential.helper=manager 以管理员身份运行新的命令提示符 使用 cmdkey 列出所有存储的凭据 /list from C:\WINDOWS\system32> 使用 cmdkey 删除 github 目标/delete:<目标名称>。在我的例子中,目标名称是 github.
最好和最简单的方法之一
刚刚在 github 上禁用了两种身份验证转到控制面板-> Windows 凭据-> 单击添加通用凭据
只需手动输入 Github 的添加 URL:hhtps://www.github.com 用户名:您的用户名密码:您的密码然后保存到它
3)在使用 git push 命令时,您必须在 Github 上生成一个令牌,再回到 Github > 设置> 开发人员设置> 生成令牌
希望这会有所帮助....
这个解决方案对我有用:
打开控制面板转到凭据管理器单击窗口凭据在通用凭据部分,会有git url,更新用户名和密码重新启动Git Bash并尝试克隆