前言

一直用的好好的仓库,突然某一天提交的时候就死活连接认证失败了。之前知道 GitHub 取消了密码认证,可咱一直用的是 RSA 密钥啊。

以为换个 ed25519 密钥就能万事大吉,结果一样认证失败,提示 timeout 和没权限。经 ssh -Tv git@github.com 测试,新生成的密钥是能认证的,一时竟不知错在哪儿。

现象

仓库是用的 ssh:// 远程地址,Git 操作仓库提示连接超时,上梯子也不行,配置 443 端口也同样的问题:

1
2
3
4
5
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

如果是用账号密码登录,那么将会有如下提示:

1
2
3
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.

The requested URL returned error: 403

解决

新生成的 ed25519 测试的时候是通过的,但用的时候就是不成功,也懒得深究为什么了,干脆将远程地址改成了 https:// ,顺手用一把 GitHub 的 token

用浏览器登录认证也行,没什么好演示,生成 token 方式也没什么好演示的,在此不表

方式1:token 替代密码

就是在需要输入密码的地方,把之前生成的 token串 粘贴到输入密码的位置,其他的就没区别,就如下图:

token替代密码输入

方式2:

也可以把 token 直接添加远程仓库链接中,这样就可以避免同一个仓库每次提交代码都要输入 token 了:

1
git remote set-url origin https://TOKEN@github.com/USERNAME/REPO.git
  • TOKEN:换成你自己得到的token
  • USERNAME:是你自己github的用户名
  • REPO:是你的仓库名称

举个栗子:

1
git remote set-url origin https://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@github.com/shxxx/xxx.git/

清除已保存账号密码

如果 push 等操作没有出现输入密码选项,请先输入如下命令,之后就可以看到输入密码选项了:

1
git config --system --unset credential.helper

想起来要记一笔的时候,已经操作过了,不想重新操作,以上方法抄自:星光夏眠