Mac 上配置多个 Gitee 账号的完整教程

💡 适用场景 :你有两个或多个 Gitee 账号(例如 personal@gitee.comwork@gitee.com),希望在不同项目中使用对应账号提交代码,避免混淆。


🔧 一、准备工作

  • macOS 系统
  • 已安装 Git(可通过 git --version 检查)
  • 两个 Gitee 账号(邮箱不同)
  • 终端(Terminal)基础操作能力

📂 二、生成多个 SSH 密钥

每个 Gitee 账号需要一个独立的 SSH 密钥。

1. 创建 SSH 密钥存储目录(如果还没有)

bash 复制代码
mkdir -p ~/.ssh/gitee

2. 生成第一个账号的 SSH 密钥(例如:个人账号)

bash 复制代码
ssh-keygen -t rsa -b 4096 -C "personal@email.com" -f ~/.ssh/gitee/id_rsa_gitee_personal
  • -C:注释,建议填写邮箱
  • -f:指定密钥文件路径

⚠️ 注意:过程中会提示输入密码(passphrase),可设置也可直接回车跳过。

3. 生成第二个账号的 SSH 密钥(例如:工作账号)

bash 复制代码
ssh-keygen -t rsa -b 4096 -C "work@company.com" -f ~/.ssh/gitee/id_rsa_gitee_work

✅ 此时你应该有两个密钥文件:

javascript 复制代码
~/.ssh/gitee/id_rsa_gitee_personal
~/.ssh/gitee/id_rsa_gitee_personal.pub

~/.ssh/gitee/id_rsa_gitee_work
~/.ssh/gitee/id_rsa_gitee_work.pub

🌐 三、将公钥添加到 Gitee 账户

1. 查看公钥内容

bash 复制代码
# 查看个人账号公钥
cat ~/.ssh/gitee/id_rsa_gitee_personal.pub

# 查看工作账号公钥
cat ~/.ssh/gitee/id_rsa_gitee_work.pub

复制输出的整段内容(以 ssh-rsa 开头,以邮箱结尾)。

2. 添加到 Gitee

分别登录两个 Gitee 账号,添加对应的 SSH 公钥:

  1. 打开 Gitee SSH 公钥管理页面
  2. 点击「添加公钥」
  3. 标题可填写如 MacBook - PersonalMacBook - Work
  4. 粘贴对应的 .pub 内容
  5. 保存

✅ 验证是否成功:

bash 复制代码
ssh -T git@gitee.com

但此时只会默认使用一个密钥,我们需要通过 SSH 配置文件指定不同账号。


⚙️ 四、配置 SSH Config 文件

编辑 SSH 配置文件,为不同账号指定不同的 Host 别名。

1. 打开或创建 SSH 配置文件

bash 复制代码
nano ~/.ssh/config

温馨提示:这里如果嫌麻烦的话可以直接command + shift + G,在弹出的文件前往框中直接输入~/.ssh/config,然后回车,直接找到ssh文件中的config,然后使用文本编辑器打开进行修改,需要注意每次修改完成之后记得保存。

2. 添加如下内容:

config 复制代码
# Gitee - 个人账号
Host gitee-personal
    HostName gitee.com
    User git
    IdentityFile ~/.ssh/gitee/id_rsa_gitee_personal
    PreferredAuthentications publickey
    IdentitiesOnly yes
    AddKeysToAgent yes
    UseKeychain yes

# Gitee - 工作账号
Host gitee-work
    HostName gitee.com
    User git
    IdentityFile ~/.ssh/gitee/id_rsa_gitee_work
    PreferredAuthentications publickey
    IdentitiesOnly yes
    AddKeysToAgent yes
    UseKeychain yes

✅ 配置说明:

config 复制代码
# 定义一个 Host 别名(可以理解为"快捷方式")
# 注意:这里写的是 gitee.com,表示当你使用 git@gitee.com 时,下面的配置就会生效
# 如果你使用了自定义别名(如 gitee-personal),则应把 gitee.com 改成那个别名
Host gitee.com
    # 实际要连接的服务器域名
    HostName gitee.com

    # SSH 登录的用户名,Git over SSH 固定使用 'git' 用户
    User git

    # 指定用于此连接的私钥文件路径
    # 这里指向你生成的 Gitee 专用私钥文件
    IdentityFile ~/.ssh/gitee_id_rsa

    # 只使用配置中指定的密钥进行认证(安全增强)
    # 防止 SSH 自动尝试其他密钥导致认证失败或混乱
    IdentitiesOnly yes

    # 连接时优先使用公钥认证方式(这是 Git 的标准做法)
    PreferredAuthentications publickey

    # 将私钥自动添加到 SSH Agent(密钥管理器)中
    # 便于在需要时自动使用(尤其是设置了 passphrase 的密钥)
    AddKeysToAgent yes

    # (macOS 特有)将密钥密码保存到钥匙串(Keychain),避免重复输入 passphrase
    # 如果你在生成密钥时设置了密码,开启此项后系统会记住它
    UseKeychain yes

🔍 各配置项详细解释

配置项 中文说明
Host gitee.com 当你执行 ssh git@gitee.comgit clone git@gitee.com:... 时,匹配并应用下面的配置
HostName gitee.com 真实的服务器地址(域名)
User git 所有 Git over SSH 连接都使用用户名 git,不是你的 Gitee 用户名
IdentityFile ~/.ssh/gitee_id_rsa 指定使用的私钥文件路径,必须与你生成的密钥一致
IdentitiesOnly yes 重要 :只使用 IdentityFile 指定的密钥,防止 SSH 自动尝试其他密钥导致冲突
PreferredAuthentications publickey 明确使用"公钥认证"方式登录
AddKeysToAgent yes 把这个密钥加入 SSH Agent 管理,方便后续免密操作
UseKeychain yes 仅 macOS 有效:将密钥的 passphrase 保存到系统钥匙串,避免每次输入密码

✅ 示例:你执行 git pull 时发生了什么?

  1. Git 调用 SSH 连接 git@gitee.com
  2. SSH 读取 ~/.ssh/config,发现 Host gitee.com 匹配
  3. 使用 ~/.ssh/gitee_id_rsa 私钥进行认证
  4. 如果私钥有密码,系统从钥匙串中获取(或弹出输入框)
  5. 认证成功,拉取代码

⚠️ 注意事项

  • 如果你有多个 Gitee 账号 ,不要全部指向 Host gitee.com,否则会冲突。

  • 正确做法是使用不同的 Host 别名 ,例如:

    config 复制代码
    Host gitee-personal
        HostName gitee.com
        User git
        IdentityFile ~/.ssh/gitee_id_rsa_personal
    
    Host gitee-work
        HostName gitee.com
        User git
        IdentityFile ~/.ssh/gitee_id_rsa_work

    然后克隆时使用:

    bash 复制代码
    git clone git@gitee-personal:username/repo.git

3. 保存并退出

  • Ctrl + O → 回车(保存)
  • Ctrl + X(退出)

4. 设置正确权限(重要!)

bash 复制代码
chmod 600 ~/.ssh/config
chmod 700 ~/.ssh
chmod 600 ~/.ssh/gitee/*

🧪 五、测试 SSH 连接

bash 复制代码
# 测试个人账号
ssh -T git@gitee-personal

# 测试工作账号
ssh -T git@gitee-work

✅ 成功输出应为:

vbnet 复制代码
Hi 你的用户名! You've successfully authenticated, but Gitee.com does not provide shell access.

❌ 如果失败,请检查:

  • 公钥是否正确添加
  • ~/.ssh/config 权限是否正确
  • 密钥路径是否正确

📦 六、克隆项目并绑定账号

1. 使用别名克隆项目

假设你要克隆两个项目:

克隆个人项目

bash 复制代码
git clone git@gitee-personal:personal-username/my-project.git

克隆工作项目

bash 复制代码
git clone git@gitee-work:work-username/company-project.git

✅ 注意:gitee-personalgitee-work 是你在 ~/.ssh/config 中定义的 Host 别名,不是真实域名。


🧑‍💻 七、设置本地 Git 用户信息(关键!)

Git 提交记录依赖于 user.nameuser.email,必须与 Gitee 账号邮箱一致。

1. 进入项目目录,设置本地配置

个人项目

bash 复制代码
cd my-project
git config user.name "Personal Name"
git config user.email "personal@email.com"

工作项目

bash 复制代码
cd company-project
git config user.name "Work Name"
git config user.email "work@company.com"

✅ 注意:使用 git config(无 --global)只对当前项目生效。

2. 验证配置

bash 复制代码
git config user.name
git config user.email

🔄 八、日常使用流程

操作 说明
git pull / git push 自动使用对应 SSH 密钥和 Git 邮箱
提交代码 提交记录会显示为对应账号
新项目 重复「克隆 + 设置本地 user」流程

🧹 九、常见问题与技巧

❓ 如何查看当前使用的是哪个 SSH 密钥?

bash 复制代码
ssh -vT git@gitee-personal

查看输出中 identity file 路径。

❓ 能否设置全局默认账号?

可以,但不推荐用于多账号。若需设置:

bash 复制代码
git config --global user.name "Default Name"
git config --global user.email "default@email.com"

然后在特定项目中覆盖即可。

❓ 如何删除某个密钥?

  • 删除文件:rm ~/.ssh/gitee/id_rsa_gitee_work*
  • 从 Gitee 删除公钥
  • 更新 ~/.ssh/config

✅ 总结

步骤 关键点
1. 生成密钥 每个账号一个独立密钥
2. 添加公钥 分别添加到对应 Gitee 账号
3. 配置 SSH 使用 Host 别名区分账号
4. 克隆项目 使用别名 Host(如 gitee-personal
5. 设置本地 user 每个项目单独配置 user.nameuser.email

🕳️十、 特别注意的一点

到了这一步其实你已经配置好了,但是有一个点需要注意,就是由于你的Host使用了别名,所以在拉取别人或者公司项目的时候你必须更换成自己自定义的 那个Host别名才能正常拉下来项目。举个例子如下:

1.自己创建的项目仓库地址如下:

  • git@gitee-personal:personal-username/my-project.git

这个地址是没有问题的,因为我们发现已经使用了自己自定义的Host别名。

2.你拉取别人项目或者公司项目仓库地址如下:

  • git@gitee.com:projectName/ceshi.git

  • 你会有些懵为啥报错了?不是已经配置好了吗?

报错的内容:Auth error: Access denied fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

  • 其实这个问题的核心就是由于你拉取的项目是别人的账号创建的项目,所以Host默认使用的是git@gitee.com开头的。这时候你想要拉取成功就必须把Host更换成你自己自定义的别名才可以拉取成功。如下所示:

  • git@gitee-personal:projectName/ceshi.git

相关推荐
Swift社区2 小时前
Spring Boot 3.x + Security + OpenFeign:如何避免内部服务调用被重复拦截?
java·spring boot·后端
码事漫谈2 小时前
AI智能体平台选型指南:从技术架构到商业落地的全景洞察
后端
少年阿闯~~3 小时前
CSS——实现盒子在页面居中
前端·css·html
开发者小天3 小时前
uniapp中封装底部跳转方法
前端·javascript·uni-app
阿波罗尼亚3 小时前
复杂查询:直接查询/子查询/视图/CTE
java·前端·数据库
正义的大古3 小时前
OpenLayers地图交互 -- 章节九:拖拽框交互详解
前端·vue.js·openlayers
青柠编程3 小时前
基于 Spring Boot 的医疗病历信息交互平台架构设计
java·spring boot·后端
三十_A4 小时前
【实录】使用 Verdaccio 从零搭建私有 npm 仓库(含完整步骤及避坑指南)
前端·npm·node.js
huangql5204 小时前
从零到一打造前端内存监控 SDK,并发布到 npm ——基于 TypeScript + Vite + ECharts的解决方案
前端·typescript·echarts