学生时期多个平台都是用自己的个人邮箱,对应同一个git账号
成为社畜后,公司配的电脑需要使用公司邮箱和用户名去使用公司私服gitlab,但自己有时候也想使用GitHub咋办呢?
生成个人账号密钥配置GitHub
生成新的密钥:
ssh-keygen -t rsa -C ‘邮箱账号'
输入文件名时设置新的文件名,比如id_rsa_github
在GitHub上配置新的公钥此处就不再赘述。
配置本地私钥
在 .ssh 目录下新建 config 文件 vim config,将下面内容添加到该文件中:
#github
Host github
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
User 个人邮箱
#gitlab
Host gitlab
HostName 公司gitlab网址
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
User 公司邮箱
ssh配置多git账号
私钥配置成功后还需要将之添加到 ssh-agent 中,下面是相关命令:
1.清除缓存
ssh-add -D
2.添加 keys
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa
3.查看 keys
ssh-add -l
然而ssh-agent 是一个用于存储私钥的临时性的 session 服务,也就是说当你重启之后,ssh-agent 服务也就重置了。
这里我们借助Mac的Automator实现开机自动设置ssh-agent。
打开 Automator(自动操作),选择 应用程序 -> 实用工具 –> 运行 Shell 脚本,然后在弹出框中填入秘钥配置命令:
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa
保存后,将该应用程序添加到开机自启项:系统偏好设置->用户与群组->登录项->添加该应用程序
每次系统重启后会执行这个 Automator task,自动 ssh-add 所有的私钥。
验证
命令 ssh -T git@别名 验证是否配置成功。
ssh -T git@github.com
sssh -T git@公司gitlab地址
快速切换个人和公司git账号
通过自定义命令别名来实现快速切换用户。
在bash_profile文件或者bashrc文件中使用alias设置自定义指令。但直接将alias写在~/.bash_profile下,但很可能导致以后只要匹配这个字符串,就直接快捷到某某命令了。因此我们在~/.bashrc中进行定义。
#自定义指令
alias 指令名1='git config --global user.name 用户名1 && git config --global user.email 邮箱1 && git config user.name && git config user.email'
alias 指令名2='git config --global user.name 用户名2 && git config --global user.email 邮箱2 && git config user.name && git config user.email'
每开一次终端,要 source ~/.bashrc 环境变量才生效。而bash_profile文件是用户登陆终端的时候会自动执行的文件,我们在里面加入一行
source ~/.bashrc
但还不够
MacOS Catalina(10.15),macOS的默认终端从bash变成了zsh。
zsh加载的是 ~/.zshrc文件,而 ‘.zshrc’ 文件中并没有定义任务环境变量。
因此需要在zshrc文件最后,增加一行
source ~/.bash_profile
再重启电脑后,大功告成!