Windows下Gitee与GitHub共用SSH密钥的配置指南
写在前面
在日常开发中,很多开发者同时使用 Gitee(码云)和 GitHub 两个代码托管平台。如果两个平台注册的是同一个邮箱,那么完全可以共用同一套 SSH 密钥,省去重复生成、管理多套密钥的麻烦。
本文将基于 Windows 系统,详细讲解如何将已配置好 Gitee 的 SSH 密钥,无缝复用到 GitHub,实现 “一把密钥走天下” 的流畅体验。
适用场景与前置条件
适用人群
- 已在 Windows 上配置好 Gitee 的 SSH 连接
- 现需配置 GitHub 的 SSH 连接
- 两个平台注册使用同一个邮箱地址
前置条件
- Windows 10 / 11 操作系统
- 已安装 Git for Windows
- 已拥有 Gitee 和 GitHub 账号(邮箱一致)
- ~/.ssh目录下已有密钥文件(如id_rsa/id_rsa.pub)
第一步:确认现有 SSH 密钥
打开 PowerShell(以普通用户身份即可),查看当前已有的 SSH 密钥:
|
ls~/.ssh
|
正常情况下,你至少应该看到以下文件:
- id_rsa—— 私钥(绝密,切勿泄露)
- id_rsa.pub—— 公钥(可公开,需上传到平台)
- known_hosts—— 已信任的服务器指纹记录
如果你之前配置过 Gitee,说明这套密钥已经经过验证,可以直接复用。
第二步:将公钥添加到 GitHub
2.1 复制公钥内容
在 PowerShell 中,使用以下命令将公钥复制到剪贴板:
|
type~/.ssh/id_rsa.pub | clip
|
常见坑:PowerShell 不支持 Linux/CMD 风格的<重定向符,所以不要使用clip < ~/.ssh/id_rsa.pub。如果clip命令无效,可直接用记事本打开id_rsa.pub手动复制。
2.2 在 GitHub 中添加公钥
- 登录 GitHub,点击右上角头像 → Settings
- 左侧菜单选择 SSH and GPG keys
- 点击 New SSH key
- Title 栏填写一个便于识别的名称(如My-Windows-Laptop)
- Key 栏粘贴刚才复制的公钥内容(以ssh-rsa开头)
- 点击 Add SSH key 保存
第三步:配置 SSH 客户端(核心步骤)
这是整个配置的关键环节。通过编辑~/.ssh/config文件,我们可以为不同平台指定认证方式,并为 GitHub 强制使用 443 端口以穿透防火墙。
3.1 创建或编辑config文件
在文件资源管理器地址栏输入%USERPROFILE%\.ssh并回车,进入该目录。
在此目录下新建一个名为 config 的文本文件(注意没有扩展名)。
3.2 写入以下配置
用记事本打开config文件,添加以下内容:
|
# Gitee 配置(保留原有配置,确保指向正确的私钥)
Host gitee.com
HostName gitee.com
User git
Port 22
IdentityFile ~/.ssh/id_rsa
PreferredAuthentications publickey
# GitHub 配置(新增,使用 443 端口绕过防火墙)
Host github.com
HostNamessh.github.com # GitHub 的 SSH 专用域名
User git
Port 443 # 使用 HTTPS 端口,避免 22 端口被屏蔽
IdentityFile ~/.ssh/id_rsa# 指向与 Gitee 相同的私钥!
PreferredAuthentications publickey
|
3.3 配置字段说明
| 字段 | 含义 |
|---|---|
| Host | 匹配 Git 命令中的主机名 |
| HostName | 实际连接的目标主机 |
| Port | SSH 连接端口(GitHub 推荐 443) |
| IdentityFile | 指定使用的私钥文件路径 |
| PreferredAuthentications | 优先使用的认证方式 |
关键点:GitHub 和 Gitee 的 IdentityFile 指向同一个私钥文件,这就是“共用密钥”的本质。
第四步:验证连通性
在 PowerShell 中分别测试两个平台:
|
# 测试 Gitee(应该直接成功)
ssh-T git@gitee.com
# 测试 GitHub(首次连接会提示确认指纹)
ssh-T git@github.com
|
首次连接 GitHub 时的指纹确认
由于你配置了Port 443和HostName ssh.github.com,SSH 会认为这是一个新的主机,弹出以下提示:
|
The authenticity of host'[ssh.github.com]:443 ([20.205.243.160]:443)'can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
Are you sure you want tocontinueconnecting (yes/no/[fingerprint])?
|
直接输入yes并回车。这是 GitHub 官方的 ED25519 指纹,安全可信。
成功标志
如果看到以下输出,说明配置成功:
|
Hi <你的GitHub用户名>! You've successfully authenticated, but GitHub does not provide shell access.
|
对于 Gitee,成功信息类似:
|
Hi <你的Gitee用户名>! You've successfully authenticated, but GITEE.COM does not provide shell access.
|
第五步(可选):HTTPS 自动转 SSH
为了方便日常使用,你可以配置 Git 全局 URL 重写。这样即使从网页复制了https://开头的仓库地址,Git 也会自动使用 SSH 协议。
执行以下两条命令:
|
git config --global url."git@github.com:".insteadOf"https://github.com/"
git config --global url."git@gitee.com:".insteadOf"https://gitee.com/"
|
设置后,以下操作会自动转换:
- git clone https://github.com/user/repo.git→ 实际使用git@github.com:user/repo.git
- git clone https://gitee.com/user/repo.git→ 实际使用git@gitee.com:user/repo.git
关于“邮箱相同,用户名不同”的说明
平台如何匹配提交记录?
答案是:通过邮箱地址,而不是用户名。
| 字段 | 作用 | 是否用于身份验证 |
|---|---|---|
| user.email | 平台通过它关联账号、统计贡献、显示头像 | 关键字段 |
| user.name | 仅作为提交记录的显示标签 | 不参与验证 |
常见场景示例
- 邮箱:your_email@example.com(两个平台注册邮箱一致)
- GitHub 用户名:your_github_username
- Gitee 用户名:your_gitee_username
- Git 全局user.name:your_display_name
推送时:
- 向 GitHub 推送 → 邮箱匹配 → 贡献计入your_github_username
- 向 Gitee 推送 → 邮箱匹配 → 贡献计入your_gitee_username
用户名不同完全不影响功能,请放心。
查看当前配置
|
git config --global user.name # 输出:your_display_name
git config --global user.email # 输出:your_email@example.com
|
如果邮箱与平台注册邮箱不一致,需修改:
|
git config --global user.email"your_correct_email@example.com"
|
常见问题与解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| Permission denied (publickey) | 公钥未添加到平台,或IdentityFile路径错误 | 检查公钥是否完整复制;检查config中的路径 |
| Connection timed out | 22 端口被防火墙屏蔽 | 确认 GitHub 配置中已设置Port 443和HostName ssh.github.com |
| PowerShell 中clip < file报错 | PowerShell 不支持<重定向符 | 改用 `type ~/.ssh/id_rsa.pub |
| no such identity | 私钥路径包含反斜杠或中文字符 | 使用正斜杠/,路径放于英文目录下 |
| 每次 push 还要输密码 | 私钥设置了密码短语(passphrase) | 使用ssh-agent缓存密码 |
| 首次连接 GitHub 提示指纹确认 | 通过 443 端口首次访问,主机记录未存入known_hosts | 输入yes确认,此为正常安全机制 |
最终文件结构一览
配置完成后,你的~/.ssh目录应包含:
|
~/.ssh/
├── id_rsa # 私钥(共用,Gitee + GitHub)
├── id_rsa.pub # 公钥(已分别上传至 Gitee 和 GitHub)
├── known_hosts # 服务器指纹(含 gitee.com 和 ssh.github.com:443)
└── config # SSH 客户端配置(双平台配置)
|
总结
通过以上步骤,你已完成以下全部配置:
- SSH 密钥在 Gitee 和 GitHub 之间共用
- ~/.ssh/config为两个平台分别指定了正确的认证参数
- GitHub 使用 443 端口,有效规避防火墙限制
- 已通过ssh -T验证双平台连通性
- git config全局 URL 重写,HTTPS 自动转 SSH
- 全局user.email与平台注册邮箱一致,贡献记录正常归位
现在,你可以在 Windows 上愉快地使用 Git 操作 Gitee 和 GitHub 的仓库了,无需再为协议、端口和密钥匹配烦恼。
以上就是Windows下Gitee与GitHub共用SSH密钥的配置指南的详细内容,更多关于Gitee与GitHub共用SSH密钥的资料请关注脚本之家其它相关文章!
本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com