游乐游手机版
首页/编程语言/文章详情

Windows下Gitee与GitHub共用SSH密钥从零开始详细配置步骤指南

时间:2026-08-05 22:13
在Windows系统下,若Gitee与GitHub注册邮箱相同,可共用同一套SSH密钥。只需确认现有密钥文件,复制公钥并添加至GitHub,即可实现“一把密钥走天下”的流畅体验,免去重复配置的繁琐。

写在前面

在日常开发工作中,不少开发者会在 Gitee(码云)与 GitHub 两个代码托管平台之间频繁切换。如果你在这两个平台注册时使用的是同一个邮箱地址,那么有个好消息:完全可以共用同一套 SSH 密钥,从而省去重复生成、管理多套密钥的繁琐流程。

Windows下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 中添加公钥

  1. 登录 GitHub,点击右上角头像 → Settings
  2. 左侧菜单选择 SSH and GPG keys
  3. 点击 New SSH key
  4. Title 栏填一个便于识别的名称,例如 My-Windows-Laptop
  5. Key 栏粘贴刚才复制的公钥内容(以 ssh-rsa 开头)
  6. 点击 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
    HostName ssh.github.com   # GitHub 的 SSH 专用域名
    User git
    Port 443                   # 使用 HTTPS 端口,避免 22 端口被屏蔽
    IdentityFile ~/.ssh/id_rsa # 指向与 Gitee 相同的私钥!
    PreferredAuthentications publickey

3.3 配置字段说明

字段含义
Host匹配 Git 命令中的主机名
HostName实际连接的目标主机地址
PortSSH 连接端口(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 to continue connecting (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 out22 端口被防火墙屏蔽确认 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 的仓库了,无需再为协议、端口和密钥匹配而烦恼。

来源:https://www.jb51.net/program/368640gs9.htm
上一篇使用C#代码轻松实现PDF版本调整的完整方法详解 下一篇Pandas数据重塑技巧:长格式与宽格式转换完全指南
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
35岁转行网络安全:从经验复用到实战落地的可行性评估
编程语言 · 2026-10-10

35岁转行网络安全:从经验复用到实战落地的可行性评估

35岁转行网络安全并非不可行,但核心在于将过往经验转化为安全领域的差异化优势。本文从岗位匹配度、技能学习顺序、实战验证闭环、求职策略及常见误区五个维度,提供一套可执行的转行评估框架与行动指南,帮助读者理性判断投入产出比,避开无效学习陷阱。

网络安全行业前景分析:技术演进与市场机遇
编程语言 · 2026-10-10

网络安全行业前景分析:技术演进与市场机遇

围绕2026年网络安全行业的发展变化,从市场需求、技术演进、细分赛道和企业落地四个层面展开,帮助读者理解行业增长逻辑、识别重点技术方向,并建立评估市场机遇与风险的基本框架。 OWASP China +2 IDC +2

2026网络安全求职全景:从岗位拆解到实战作品集构建
编程语言 · 2026-10-10

2026网络安全求职全景:从岗位拆解到实战作品集构建

本文基于2026年网络安全行业招聘趋势,深入剖析安全运维、攻防渗透、云安全等核心岗位的技术栈差异与能力侧重。文章不仅梳理了从基础网络知识到高级攻防演练的学习路径,更提供了“以终为始”的求职策略:通过拆解JD反向验证技能缺口,并指导如何将CTF经历、HomeLab实验转化为具有说服力的项目作品集,帮助

2024安全攻防实战:从勒索软件到AI治理的破局与重构
编程语言 · 2026-10-10

2024安全攻防实战:从勒索软件到AI治理的破局与重构

2024年的网络安全已从单纯的技术对抗演变为业务连续性的生死博弈。本文基于ENISA、微软及世界经济论坛的最新报告,深入剖析勒索软件的“双重勒索”演变、身份凭证成为首要攻击面的现状,以及生成式AI带来的攻防不对称性。文章进一步拆解企业如何从被动防御转向“发现-保护-检测-响应-恢复”的闭环体系,重点

网站编程AI工具测评:提升开发效率的辅助软件推荐
编程语言 · 2026-10-10

网站编程AI工具测评:提升开发效率的辅助软件推荐

围绕网站开发中的实际需求,对AI编程辅助工具进行分类、操作体验与效果验证,帮助读者快速判断哪些工具真正能提升开发效率,并避开代码质量、隐私、安全与过度依赖等常见问题。