GitHub 多账号生存指南:从 SSH 连接到 GPG 签名全流程

在同一台电脑上管理多个 GitHub 账号(如个人号Account_A和私有项目号 Account_B)时,核心挑战在于权限隔离与身份验证。本文将带你完成一套物理隔离、身份明确的开发环境配置。


文章目录

    • [一、 生成 SSH 密钥:开启权限的大门](#一、 生成 SSH 密钥:开启权限的大门)
      • [1. 为两个账号生成独立的 Ed25519 密钥](#1. 为两个账号生成独立的 Ed25519 密钥)
      • [2. 将公钥关联至 GitHub 账号](#2. 将公钥关联至 GitHub 账号)
    • [二、 配置 SSH 路由隔离:多账号的核心逻辑](#二、 配置 SSH 路由隔离:多账号的核心逻辑)
    • [三、 GPG 双签名配置:获取 Verified 勋章](#三、 GPG 双签名配置:获取 Verified 勋章)
      • [1. 生成两套 GPG 密钥](#1. 生成两套 GPG 密钥)
      • [2. 导出并关联 GitHub](#2. 导出并关联 GitHub)
    • [四、 实战:克隆项目与仓库身份锁定](#四、 实战:克隆项目与仓库身份锁定)
      • [1. 使用别名 Clone 项目](#1. 使用别名 Clone 项目)
      • [2. 仓库内的"身份三板斧"](#2. 仓库内的“身份三板斧”)

一、 生成 SSH 密钥:开启权限的大门

原理:SSH 采用非对称加密。你生成一对密钥,将"公钥"交给 GitHub,自己留着"私钥"。

1. 为两个账号生成独立的 Ed25519 密钥

Ed25519 是目前推荐的算法,比 RSA 更安全、更轻量。当然,也可以用RSA。

为账号 A 生成:

bash 复制代码
ssh-keygen -t ed25519 -C "user_a@email.com" -f ~/.ssh/id_ed25519_account_a

为账号 B 生成:

bash 复制代码
ssh-keygen -t ed25519 -C "user_b@email.com" -f ~/.ssh/id_ed25519_account_b

提示:建议设置 Passphrase(密码)以增强私钥安全性,当然,也可以不做设置。

2. 将公钥关联至 GitHub 账号

分别登录两个 GitHub 账号:

1.运行cat ~/.ssh/id_ed25519_account_a.pub查看并复制公钥内容。同理可查看id_ed25519_account_b

  1. 登录 GitHub -> Settings ->SSH and GPG keys-> New SSH key。

  2. 粘贴内容并保存。


二、 配置 SSH 路由隔离:多账号的核心逻辑

原理:修改~/.ssh/config,通过"别名(Alias)"强制指定连接不同仓库时使用哪把私钥。

可直接输入命令行在~/.ssh目录下创建或修改一个名为config的文件(无后缀):

bash 复制代码
# 编辑 config 文件
nano ~/.ssh/config

在文件中写入以下内容,通过Host 别名来区分

也可以手动编辑或创建~/.ssh/config

plain 复制代码
# 账号 A 别名 (个人/老号)
Host github-a
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_account_a

# 账号 B 别名 (工作/新号)
Host github-b
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_account_b

测试连接:

bash 复制代码
ssh -T git@github-a
ssh -T git@github-b
# 看到 "Hi [Username]! You've successfully authenticated" 即为成功。

三、 GPG 双签名配置:获取 Verified 勋章

原理 :SSH 负责推送权限,GPG 负责内容防伪。GitHub 会校验git config中的邮箱、GPG 密钥邮箱以及账号验证邮箱是否三位一体。

前置条件:下载Gpg4win,下载过程中只需要勾选这一个即可。

1. 生成两套 GPG 密钥

bash 复制代码
gpg --full-generate-key
  • 配置 :选择 (9) ECC (EdDSA) -> (1) Curve 25519 -> 0 (永不过期)。
  • 账号 A :使用 user_a@email.com。
  • 账号 B :使用 user_b@email.com。

2. 导出并关联 GitHub

bash 复制代码
# 获取 Key ID (取 [SC] 前的 16 位字符)
gpg --list-secret-keys --keyid-format=LONG
# 输出中 sec 这一行 / 后面的字符串就是你的 KeyID(例如:4AB5C343725679D2)。


# 导出公钥并贴入 GitHub 的 GPG keys 页面
gpg --armor --export [Your_Key_ID]

四、 实战:克隆项目与仓库身份锁定

1. 使用别名 Clone 项目

必须 手动修改 GitHub 提供的 URL,将 github.com 替换为你在 Config 中定义的别名。

bash 复制代码
# 错误示范:git clone git@github.com:username/private-repo.git
# 正确示范:使用账号 B 的别名拉取私有仓库
git clone git@github-b:username/private-repo.git

2. 仓库内的"身份三板斧"

进入仓库目录,执行局部配置以覆盖全局设置,防止身份泄露:

bash 复制代码
cd private-repo

# 1. 锁定该仓库的提交邮箱 (必须与该账号的 GPG 密钥一致)
git config --local user.email "user_b@email.com"

# 2. 锁定该仓库使用的 GPG Key ID
git config --local user.signingkey [Key_ID_B]

# 3. 开启自动签名
git config --local commit.gpgsign true

如果未设置全局配置,系统会提醒你,但尽量不设置--global全局设置,以防在忘记进行局部配置的情况下,默认执行全局设置。


遵循这套流程,你就能在一台机器上完美驾驭多个 GitHub 身份,同时确保每个提交都具有不可篡改的专业背书。

相关推荐
福建佰胜张工2 小时前
深度解析 Allen-Bradley 150-B135NBDA 智能电机控制器:选型、参数与工业应用
运维·数据库·单片机·嵌入式硬件·安全·自动化
wefg12 小时前
【Docker】镜像相关指令
运维·docker·容器
feng_you_ying_li2 小时前
linux之网络层
linux·运维·网络
未来之窗软件服务2 小时前
Linux 运维日志删除的多种方式—东方仙盟
linux·运维·服务器·仙盟创梦ide·东方仙盟
卓豪终端管理2 小时前
IT 运维视角下的终端数据安全:能力框架与落地清单
运维
阿智的AI开发笔记2 小时前
充了 200 块只跑出 3 条:AI 视频真正贵的地方,是「按次」和「按秒」的区别
github
小雉系统3 小时前
BcoreOS实战:用一个升级包,让Rocky Linux跑进Debian服务器
linux·运维·服务器·debian
甜到心里的蛋糕3 小时前
从 QQ 机器人到 B 站 AI 运营:一套可复现的视频流水线踩坑实录
运维·人工智能·python·自动化·视频制作
QYR-分析3 小时前
26.2% 高增!场内及园区无人物流车,厂内短驳自动化的 L4 货运载体
运维·自动化
GitHub实测笔记3 小时前
rtk 本机实测:给 AI Agent 砍掉 90% 的命令行噪音(Linux)
github