Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

git push 时提示输入账号密码,正确输入后依然报错? #29

Open
jiansoung opened this issue Oct 28, 2023 · 1 comment
Open
Labels

Comments

@jiansoung
Copy link
Owner

一、问题

如下图所示,当执行 git push 推送本地代码至远程仓库时,提示输入账号密码,但按提示输入正确的账号密码后却报错。

Screenshot 2023-10-28 at 10 55 33

二、问题分析

这里面存在两个问题:一是我的 SSH Key 有正确设置,为什么 git 提示输入账号密码而不使用 SSH Key?二是为什么按照提示输入了正确的账号密码后会报错?

问题一:我的 SSH Key 有正确设置,为什么 git 提示输入账号密码而不使用 SSH Key?

对这个问题,我首先检查了 SSH Key 是否有正常设置。如下图,SSH Key 测试通过,也就是说设置是没问题的。

Screenshot 2023-10-28 at 11 38 56

那为什么 git 不使用 SSH Key,而提示输入账号密码呢? GitHub 文档(Why is Git always asking for my password?)给出了解释:

If Git prompts you for a username and password every time you try to interact with GitHub, you're probably using the HTTPS clone URL for your repository.

检查 remote URL 发现确实如文档所述当初 clone 使用的是 HTTPS clone URL:

$ git config --get remote.origin.url
Screenshot 2023-10-28 at 12 43 38

至此,第一个问题算是解决了。

总结就是当初 clone 的时候使用的是 HTTPS 的 remote URL,后来 push 也就默认使用了 HTTPS 的方式,和 SSH Key 是否正常设置无关。

问题二:为什么按照提示输入了正确的账号密码后会报错?

原因很简单,GitHub 从2021年8月13日 09:00 PST 开始就不接受使用账户密码对 GitHub.com 进行 git 操作了。

ps:脱离业界太久。。。

As previously announced, starting on August 13, 2021, at 09:00 PST, we will no longer accept account passwords when authenticating Git operations on GitHub.com. Instead, token-based authentication (for example, personal access, OAuth, SSH Key, or GitHub App installation token) will be required for all authenticated Git operations.

链接在这里:Git password authentication is shutting down

三、解决办法

问题既然都已明白了,现在就来解决我的需求 —— 使用 SSH Key 进行 git 操作。

操作很简单,只有两步:

一是设置 SSH Key ,参考GitHub 官方文档 Connecting to GitHub with SSH

二是更改仓库的 remote URL (使用 SSH 方式的 remote URL)。

$ git remote set-url origin [your SSH remote URL]
Screenshot 2023-10-28 at 13 02 14

ps: 再次使用 git config --get remote.origin.url 命令可确认已经正确更改。

四、总结

以后 git clone 只使用 SSH remote URL 。

@jiansoung jiansoung added the Git label Oct 28, 2023
@JoecosB
Copy link

JoecosB commented Sep 26, 2024

感谢前辈整理经验

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants