mac上配置github多账户ssh隔离的关键是ssh配置路由加仓库级git设置:为各账户生成独立ed25519密钥并命名区分,配置~/.ssh/config绑定host别名与私钥,克隆时必须用别名,取消全局user设置而改用仓库级git config指定name/email,并通过ssh-add加载密钥后ssh-t验证连通性。
mac 上配置多个 github 账户的 ssh 多账号隔离,关键不是“同时登录”,而是让不同仓库自动走对应的密钥和身份——靠 ssh 配置路由 + 仓库级 git 设置实现完全隔离。
生成专属 SSH 密钥对
每个 GitHub 账户必须配独立密钥,不能共用 id_ed25519 或 id_rsa。文件名要能区分用途:
- 个人账户:
ssh-keygen -t ed25519 -C "me@personal.com" -f ~/.ssh/id_ed25519_personal - 工作账户:
ssh-keygen -t ed25519 -C "you@company.com" -f ~/.ssh/id_ed25519_work
生成后,把 .pub 文件内容分别粘贴到对应 GitHub 账户的 Settings → SSH and GPG keys 页面里。
配置 ~/.ssh/config 实现自动路由
编辑 ~/.ssh/config(若不存在可新建),为每个账户定义 Host 别名,绑定域名和私钥:
# 个人账户 Host github.com-personal HostName github.com User git IdentityFile ~/.ssh/id_ed25519_personal IdentitiesOnly yes <h1>工作账户</h1><p>Host github.com-work HostName github.com User git IdentityFile ~/.ssh/id_ed25519_work IdentitiesOnly yes </p>
⚠️ 注意:克隆时必须用别名,比如 git clone git@github.com-personal:me/repo.git,而不是 git@github.com: —— 否则 SSH 不会加载对应密钥。
启动 ssh-agent 并加载密钥
确保密钥被系统识别:
- 启动代理:
eval "$(ssh-agent -s)" - 添加密钥:
ssh-add ~/.ssh/id_ed25519_personal和ssh-add ~/.ssh/id_ed25519_work - 验证是否加载:
ssh-add -l应列出两个密钥
macOS 12+ 可加 AddKeysToAgent yes 和 UseKeychain yes 到 config 中,避免每次重启终端重输密码。
按仓库设置 Git 用户信息
清空全局用户配置,避免干扰:
git config --global --unset user.namegit config --global --unset user.email
然后进每个项目目录,单独设置:
- 个人项目:
git config user.name "Your Name"+git config user.email "me@personal.com" - 工作项目:
git config user.name "Your Work Name"+git config user.email "you@company.com"
这样 commit 记录才会正确归属,且不会跨仓库混用。
测试连通性
运行以下命令确认各账户 SSH 连接正常:
-
ssh -T git@github.com-personal→ 应显示 “Hi me! You've successfully authenticated…” -
ssh -T git@github.com-work→ 应显示 “Hi you! You've successfully authenticated…”
失败时检查 config 拼写、密钥路径、GitHub 是否已添加公钥,以及是否漏掉 IdentitiesOnly yes(防止密钥冲突)。











