告别403:Windows下为GitHub配置SSH密钥的完整避坑指南
2026/7/16 17:49:08 网站建设 项目流程

1. 为什么你的GitHub突然报403错误?

最近在Windows上提交代码到GitHub时,突然遇到这样的错误提示:"remote: Support for password authentication was removed..." 然后就是一串403错误代码。这个场景我太熟悉了,去年8月之后几乎所有开发者都会遇到这个问题。

简单来说,GitHub在2021年8月13日彻底移除了密码验证方式。这不是bug,而是GitHub为了安全考虑做的重大调整。想象一下,就像你家门锁从老式钥匙升级成了指纹锁,虽然更安全了,但需要重新配置一下。

我刚开始遇到这个问题时也很懵,试了几种方法后发现最靠谱的解决方案就是配置SSH密钥。这就像给你的GitHub账户配一把专属的数字钥匙,不仅安全,而且一劳永逸。下面我会手把手带你走完整个流程,包括那些容易踩坑的地方。

2. 准备工作:配置Git基础信息

2.1 设置全局用户名和邮箱

在生成SSH密钥之前,我们需要先告诉Git你是谁。打开Git Bash(没有的话需要先安装Git for Windows),输入以下两条命令:

git config --global user.name "你的GitHub用户名" git config --global user.email "你的GitHub注册邮箱"

这里有个小技巧:如果你经常在不同项目使用不同身份,可以去掉--global参数,只在特定项目目录下设置。我就曾经因为用错邮箱导致提交记录没被统计到个人主页,排查了好久才发现问题。

2.2 检查现有配置

设置完成后,可以用这个命令查看当前配置:

git config --global --list

如果看到类似这样的输出就说明配置成功了:

user.name=YourName user.email=your.email@example.com

3. 生成SSH密钥对

3.1 密钥生成命令详解

现在来到关键步骤,输入这个命令生成SSH密钥:

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

这里有几个需要注意的点:

  1. 我推荐使用ed25519算法而不是传统的RSA,因为更安全且密钥更短
  2. -C后面的注释一般用邮箱,但实际可以是任意文本
  3. 执行后会让你选择保存位置,直接回车用默认路径就行

3.2 关于密码的设置

系统会问你是否设置密码(passphrase),我的建议是:

  • 个人电脑:可以直接回车留空,方便日常使用
  • 公用电脑:建议设置密码,增加安全性

我自己的经验是,如果设置了密码,每次使用密钥都需要输入,虽然安全但确实有点麻烦。折中方案是用ssh-agent管理密码,后面会讲到。

3.3 密钥文件说明

成功后会生成两个文件:

  • id_ed25519:私钥,相当于你的家门钥匙,绝对不能外泄
  • id_ed25519.pub:公钥,可以理解为门锁,需要上传到GitHub

文件默认存放在C:\Users\你的用户名\.ssh目录下。如果找不到,可能是隐藏了文件夹,需要在资源管理器设置显示隐藏项目。

4. 管理SSH密钥代理

4.1 启动ssh-agent

ssh-agent就像个钥匙串管理器,可以帮你记住密码。在Git Bash中运行:

eval $(ssh-agent -s)

如果看到类似Agent pid 12345的输出,说明启动成功。这里有个坑:有些Windows版本可能需要先手动启动服务,如果报错可以尝试:

exec ssh-agent bash

4.2 添加私钥到代理

接着把私钥交给agent管理:

ssh-add ~/.ssh/id_ed25519

如果你之前设置了密码,这时会提示输入。成功后可以用ssh-add -l查看已添加的密钥。

我遇到过ssh-agent突然不工作的情况,这时候需要先ssh-add -D删除所有密钥,再重新添加。Windows系统下这个问题比较常见。

5. 将公钥添加到GitHub账户

5.1 复制公钥内容

在Git Bash中运行这个命令复制公钥:

clip < ~/.ssh/id_ed25519.pub

如果clip命令不工作(特别是WSL环境下),可以直接用记事本打开.pub文件全选复制。注意要复制完整内容,包括开头的ssh-ed25519和结尾的邮箱。

5.2 GitHub后台配置

  1. 登录GitHub,点击右上角头像 > Settings
  2. 左侧选择"SSH and GPG keys"
  3. 点击"New SSH key"
  4. Title可以取个有意义的名称,比如"我的工作电脑"
  5. 在Key区域粘贴刚才复制的公钥内容
  6. 点击"Add SSH key"完成

这里容易犯的错误是:

  • 复制时多出空格或换行
  • 使用了错误的公钥文件内容
  • 忘记点击最后的确认按钮

6. 测试连接与问题排查

6.1 基础连接测试

运行测试命令:

ssh -T git@github.com

第一次连接会询问是否继续,输入yes回车。如果看到带你用户名的欢迎信息,比如:

Hi username! You've successfully authenticated...

说明配置成功了。

6.2 常见问题解决方案

问题1:端口被屏蔽有些网络环境会屏蔽默认的22端口,可以改用443端口。编辑~/.ssh/config文件(没有就新建):

Host github.com Hostname ssh.github.com Port 443

问题2:多账号冲突如果你有多个GitHub账号,需要为每个账号创建独立的密钥对,并在config文件中配置:

# 主账号 Host github.com HostName github.com IdentityFile ~/.ssh/id_ed25519_main # 工作账号 Host github-work HostName github.com IdentityFile ~/.ssh/id_ed25519_work

使用时记得修改仓库remote地址中的域名部分,比如:

git remote set-url origin git@github-work:username/repo.git

问题3:代理冲突如果你开了网络代理,可能会导致SSH连接失败。可以尝试临时关闭代理,或者在config中添加:

Host github.com ProxyCommand none

7. 将现有项目切换为SSH协议

7.1 修改远程仓库地址

对于已经存在的项目,需要把HTTPS地址改为SSH。先查看当前remote:

git remote -v

然后修改(假设remote叫origin):

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

7.2 验证切换结果

再次查看remote确认地址已变更:

git remote -v

应该看到类似这样的输出:

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

现在尝试推送一个更改,如果不再出现403错误,说明全部配置成功了。我在团队内部推行这套方案后,新同事的GitHub配置问题减少了90%以上。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询