Mac 多 Git 账户配置

通常公司代码一般托管在公司自建 Gitlab 服务上,自己的代码托管在 GitHub 或者 Coding 这样的网站上。Git 账户经常切换非常不方便,这就需要配置多个 Git 账户,以向不同的网站 push 代码。本文将介绍如何在 Mac 上配置多个 Git 账户,以及快速切换管理。

1.生成密钥

Mac 中密钥文件都保存在 /Users/你的用户名/.ssh 目录下,如果没有该目录手动创建即可。进入到该目录后根据邮箱生成密钥:ssh-keygen -t rsa -C ‘邮箱账号'

注意红框处 id_rsa_testgit ,此处是指定密钥名称,可以根据不同的账号命名,方便区分。如果不指定名称会使用默认值:id_rsa,再次生成密钥会覆盖上一次的密钥,因此每次都要指定不同的名称。名称输入完后一直回车直到密钥生成。

使用 ssh-keygen 命令,分别生成 GitHub 和 Coding 的密钥。每组密钥其中以.pub结尾的是公钥,另一个是私钥。查看生成的所有密钥:

1
2
3
4
5
6
7
~/.ssh  ls -l
rw------- lujiahao staff 2 KiB Sun Apr 19 20:11:54 2020 id_rsa_coding
rw-r--r-- lujiahao staff 570 B Sun Apr 19 20:11:54 2020 id_rsa_coding.pub
rw------- lujiahao staff 1 KiB Sun Jun 24 22:04:49 2018 id_rsa_github
rw-r--r-- lujiahao staff 404 B Sun Jun 24 22:04:49 2018 id_rsa_github.pub
rw------- lujiahao staff 1 KiB Wed May 8 10:01:00 2019 id_rsa_gitlab
rw-r--r-- lujiahao staff 405 B Wed May 8 10:01:00 2019 id_rsa_gitlab.pub

2.托管网站配置公钥

2.1 GitHub 配置

登录 GitHub,按照顺序到达指定页面 Settings --> SSH and GPG keys --> New SSH Key

在命令行中执行命令查看并复制公钥内容:cat ~/.ssh/id_rsa_github.pub
在打开的页面的 Key 输入框中粘贴刚刚复制的公钥,Title 自定义填写,然后点击下方的 Add SSH key 按钮保存公钥:

2.2 Coding 配置

Coding 的配置与 GitHub 配置基本相似,查看并复制公钥内容:cat ~/.ssh/id_rsa_coding.pub

可以勾选永久有效,避免过期失效重复操作。当然这样操作会降低一定的安全性,根据自己的情况选择即可。

3.本地配置私钥

SSH 原理:在托管网站使用公钥,在本地使用私钥,通过公钥和私钥的认证,本地仓库就可以和远程仓库进行通信。

.ssh 目录下新建 config 文件 vim config,将下面内容添加到该文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
User user1
AddKeysToAgent yes
UseKeychain yes

#coding
Host sjzcode.coding.net
HostName sjzcode.coding.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_coding
User user2
AddKeysToAgent yes
UseKeychain yes

config 文件中各个字段的含义:

Host : 配置别名
HostName : git服务器地址
IdentityFile : 私钥文件位置
User : 用户名
AddKeysToAgent : 添加到 ss-agent 中
UseKeychain : 添加到钥匙串中

如果你配置的 Coding ,需要注意 HostName 要填写你的团队的地址,Coding 现在对于新用户都是注册为团队,并为每个团队单独创建了一个二级域名,比如我的账户二级域名:sjzcode.coding.net。直接写 coding.net 无法认证成功。

4.更新 Identities

私钥配置成功后还需要将之添加到 ssh-agent 中,下面是相关命令:

1
2
3
4
5
6
7
1.清除缓存
ssh-add -D
2.添加 keys
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_coding
3.查看 keys
ssh-add -l

上面 config 中的 AddKeysToAgentUseKeychain 这两个配置在 macOS 10.12.2 以后的系统生效,会将私钥添加到 Mac 的钥匙串中。
ssh-agent 是一个用于存储私钥的临时性的 session 服务,也就是说当你重启之后,ssh-agent 服务也就重置了。

5.Automator 自动设置

打开 Automator(自动操作),选择 实用工具 –> 运行 Shell 脚本,然后在弹出框中填入秘钥配置命令:

1
2
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_gitlab_sqyc

然后将脚本添加到启动项中,每次系统重启后会执行这个 Automator task,自动 ssh-add 所有的私钥

6.验证

命令 ssh -T git@别名 验证是否配置成功。

1
2
3
4
5
6
7
~/.ssh ssh -T git@github.com
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

~/.ssh ssh -T git@sjzcode.coding.net
Coding 提示: Hello xxx, You've connected to Coding.net via SSH. This is a personal key.
xx,你好,你已经通过 SSH 协议认证 Coding.net 服务,这是一个个人公钥.
公钥指纹:xxxxxxxxx

6.账号快速切换

如果在各个托管平台使用的用户名和邮箱都相同,请忽略此步骤。
这一步的原理就是通过自定义命令别名来实现快速切换用户。

.bash_profile 中增加下面内容:

1
2
3
#git change
alias cgc='git config --global user.name 用户名1 && git config --global user.email 邮箱1 && git config user.name && git config user.email'
alias cgg='git config --global user.name 用户名2 && git config --global user.email 邮箱2 && git config user.name && git config user.email'

切记执行 source ~/.bash_profile 以使修改生效。

参考资料

Tips

欢迎收藏和转发,感谢你的支持!(๑•̀ㅂ•́)و✧

欢迎关注我:后端小哥,专注后端开发,希望和你一起进步!