GitHub:无效的用户名或密码

我有一个在GitHub上托pipe的项目。 我试图推动我对主人的修改失败。 我总是得到以下错误信息

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给出的指示和许多堆栈讨论的build议,但没办法。 你有什么想法,我可能做错了吗?

https://git@github.com/eurydyce/MDANSE.git不是一个SSHurl,它是一个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文件中所做的, ~/.gitconfig文件目前包含以下条目[remote "origin"] url=git@github.com:eurydyce/MDANSE.git

这不应该在你的全局configuration(在~/ )。
你可以在你的repo中检查git config -l :该url应该在本地configuration中声明: <yourrepo>/.git/config

所以在执行git remote set-url命令时,请确保您在回购path中。

启用双因素身份validation(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后,您将需要input个人访问令牌,而不是2FA代码和GitHub密码。

例如,当你使用命令行上的Git使用git clonegit fetchgit pullgit push等命令访问存储库时,必须在提示input用户名和密码时提供GitHub用户名和个人访问令牌。 命令行提示符不会指定您要求input密码时input个人访问令牌。

如何解决它

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

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

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

如果你使用https://something@github.com/username/repository.git ,那么你已经预设了Git用于authentication的用户名: something 。 既然你使用了https://git@github.com会尝试使用你的密码当然不起作用的git用户名login。 所以你将不得不使用你的用户名。

替代scheme实际上是使用SSH进行身份validation。 这样你将避免不得不一直input你的密码。 而且因为它似乎已经工作了,所以你应该使用这个。

要做到这一点,你需要改变你的远程URL,所以Git知道它需要通过SSH连接。 格式是这样的: git@github.com:username/repository 。 要更新您的URL,请使用以下命令:

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