转载

同时管理多个ssh私钥

最近在实习,公司使用 GitLab 来托管代码,而个人通常会把私人代码托管到 Github 上,公司邮箱与私人邮箱不同,所以产生的 SSH key 不一样,这就尴尬了,那么该怎么办呢?

通过查阅到的一些资料,大多是通过 ssh 的 config 文件来实现不同的域名采用不同的密钥来认证,下面以 Mac 环境为例来介绍该如何操作。

配置 git 用户名和密码

# 工作用
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 公/私钥对

# 工作用
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 文件

配置文件 ~/.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冲突

原文  https://segmentfault.com/a/1190000008117648
正文到此结束
Loading...