AIGC标识 使用github ssh key,解决作为他人github私有仓库的collaborator,无法使用git远程连接问题

GitHub Git Fetch 认证失败:从 HTTPS 403 到 SSH 配置

最近在 WSL 中使用 GitHub 仓库时,执行:

git fetch

遇到了 GitHub 认证失败的问题。本文简单记录问题原因以及最终使用 SSH 解决的过程。

1. 问题现象

仓库的远程地址最初使用 HTTPS:

git remote -v

类似:

origin  https://github.com/xxx/db.git (fetch)
origin  https://github.com/xxx/db.git (push)

执行:

git fetch

Git 提示输入 GitHub 用户名和密码:

Username for 'https://github.com':
Password for 'https://username@github.com':

即使输入正确的 GitHub 账号密码,依然出现:

remote: Invalid username or token.
Password authentication is not supported for Git operations.
fatal: Authentication failed

2. 问题原因

问题并不是 GitHub 账号或密码输入错误,而是 GitHub 已经不再支持通过账号密码进行 Git 的 HTTPS 身份认证

因此,虽然终端显示的是:

Password:

但这里实际上不能输入 GitHub 登录密码。

使用 HTTPS 操作 GitHub 仓库时,应使用 Personal Access Token(PAT) 等受支持的认证方式。

后来改用 PAT 后,又遇到了:

remote: Write access to repository not granted.
fatal: unable to access '...': The requested URL returned error: 403

此时账号本身已经是该仓库的 Collaborator,因此问题进一步定位到了 Token 的仓库访问范围或权限配置

也就是说即使 GitHub 账号拥有仓库访问权限,也不意味着创建的 PAT 自动拥有相同权限。

为了避免继续处理 HTTPS Token 权限问题,最终选择将 GitHub 认证方式改为 SSH。

3. 配置 SSH Key

首先在 WSL 中生成 SSH Key:

ssh-keygen -t ed25519 -C "你的GitHub邮箱"

按照提示完成生成后,可以查看公钥:

cat ~/.ssh/id_ed25519.pub

复制输出的整行内容。

随后进入 GitHub:

Settings
→ SSH and GPG keys
→ New SSH key

将公钥添加到 GitHub 账号。

4. 测试 SSH 连接

执行:

ssh -T git@github.com

第一次连接可能出现:

The authenticity of host 'github.com' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

确认主机信息无误后输入:

yes

如果最终出现类似:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

说明 SSH 身份认证已经成功。

5. 修改仓库远程地址

原来的仓库使用 HTTPS:

https://github.com/xxx/db.git

将其修改为 SSH:

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

检查:

git remote -v

此时应该看到:

origin  git@github.com:xxx/xxx.git (fetch)
origin  git@github.com:xxx/xxx.git (push)

再次执行:

git fetch

即可正常从 GitHub 获取远程代码,不再需要输入用户名和 PAT。

6. 总结

这次问题的核心并不是 Git 或 WSL 本身,而是 GitHub 的身份认证方式

最开始使用的是:

HTTPS + GitHub账号密码

但 GitHub 已经不支持这种认证方式。

改用 PAT 后,又因为 Token 的仓库访问范围或权限配置出现了 403。最终改成:

SSH + SSH Key

GitHub 可以通过 SSH Key 确认对应的 GitHub 账号,再根据该账号的 Collaborator 权限判断是否允许访问仓库。

对于经常在 WSL/Linux 环境下使用 GitHub 的情况,配置一次 SSH Key 后,后续执行 git fetchgit pullgit push 都更加方便。

posted @ 2026-09-12 21:20  tjmark  阅读(17)  评论(0)    收藏  举报