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 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/'
为什么发生这种情况
从GitHub帮助文档 :
启用2FA后,您将需要input个人访问令牌,而不是2FA代码和GitHub密码。
…
例如,当你使用命令行上的Git使用
git clone
,git fetch
,git pull
或git push
等命令访问存储库时,必须在提示input用户名和密码时提供GitHub用户名和个人访问令牌。 命令行提示符不会指定您要求input密码时input个人访问令牌。
如何解决它
- 生成个人访问令牌 。 (有关为命令行创build个人访问令牌的详细指南。)
- 复制个人访问令牌。
- 重新尝试您正在尝试的命令,并使用个人访问令牌代替您的密码。
相关问题: 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