最近在实习,公司使用 GitLab 来托管代码,而个人通常会把私人代码托管到 Github 上,公司邮箱与私人邮箱不同,所以产生的 SSH key 不一样,这就尴尬了,那么该怎么办呢?
通过查阅到的一些资料,大多是通过 ssh 的 config 文件来实现不同的域名采用不同的密钥来认证,下面以 Mac 环境为例来介绍该如何操作。
# 工作用 git config --global user.name 'name1' git config --global user.email '工作邮箱' # 个人用 git config --local user.name 'name2' git config --local user.email '个人邮箱'
我在用户目录下,配置 lcoal 这一部分时,遇到个问题,说是“因为不存在,无法锁定 .git/config
文件”。按照报错信息,新建这个文件,再运行上面的命令就没错了。
# 工作用 ssh-keygen -t rsa -C "工作邮箱" # 个人用 ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C "个人邮箱"
执行完上述命令后,查看 .ssh
目录结构,如下:
.ssh ├── config ├── id_rsa ├── id_rsa.github ├── id_rsa.github.pub ├── id_rsa.pub └── known_hosts
配置文件 ~/.ssh/config
,要是没有的话,就新建一个。
Host github.com User git IdentityFile ~/.ssh/id_rsa.github
参数 User
为你访问的 git ssh 地址的@之前的部分,比如:对于域名 git@github.com
而言,User值为应该为 git。
参数 Host 为 git 仓库的域名或者 IP。
将个人用和公司用的公钥分别上传到指定地方,即可。
输入 ssh -T git@github.com
,若出现下面的字符:
Hi VonAlex! You've successfully authenticated, but GitHub does not provide shell access.
表明成功,若是这样的字符:
Permission denied (publickey).
那就是有错误,需要修改。
这样以后,就可以公用私用两不误,over!
【1】 linux管理多个ssh公钥密钥
【2】 一台机器上Github/Gitlab多账户管理SSH Key切换解决push冲突