注意
想法及时记录,实现可以待做。
gitlab/github仓库使用不同的ssh
每个公司都会有自己的git仓库,比如常见的gitlab仓库,而作为开发人员,经常会去社区使用的是github仓库,那么如果需要有不同的秘钥来进行ssh使用这两个不同的残留,该怎么办呢?
本文以Mac为主。
秘钥文件
- 在~/.ssh目录下,查看是否存在id_rsa文件,或者是类似的命名都可以。
# 查看是否存在 .ssh 目录
ls ~ -a # 列出所有文件,看是否含有 .ssh
# 如果存在 .ssh 目录,查看是否存在 id_rsa、 id_rsa.pub 文件
ls ~/.ssh -a
- 如果没有.ssh目录,或者是没有id_rsa文件
mkdir .ssh # 如果没有 .ssh 目录
cd .ssh
# 如果没有 id_rsa、 id_rsa.pub 文件,运行下面的命令, 并一路回车
ssh-keygen -t rsa -C "your_email@example.com"
- 打开 自己的 github。 settings -> SSH and GPG keys -> New SSH key。
- 将本地刚刚生成的 ~/.ssh/id_rsa.pub 里面的内容拷贝到 New SSH key 的Key里面。
想要多个秘钥文件
在上述生成秘钥的环节,不要一路按回车,而是在选择保存文件的时候,可以重写秘钥文件名称,比如可以修改为id_rsa.github
,那么公钥肯定是id_rsa_github.pub
。
gitlab和github等如何选择使用对应的秘钥文件呢?
- 打开 ~/.ssh/config 文件 如果没有就新建一个。
- 编辑 config 内容:
# gitee and github
# 注意:多个Host公用一个公钥时,
# 对应的HostName和Port必须跟在Host后面
#Host gitee.com
#HostName gitee.com
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa.github
# gerrit
#Host gerrit.awaimai.com
#HostName gerrit.awaimai.com
#Port 8000
#PreferredAuthentications publickey
#IdentityFile ~/.ssh/id_rsa_gerrit
# 其他的统一用id_rsa文件登陆,或者密码。
# 注意:这里的第二行后面有个password,就是同时允许密码登陆
# 不然第一次没加公钥,密码也登陆不了,会提示错误:Permission denied (publickey,password).
Host *
PreferredAuthentications publickey,password
IdentityFile ~/.ssh/id_rsa
检测是否设置完成呢?
- 对弈github
ssh -T git@github.com
- 对于gitlab
ssh -T git@gitlib.com
检测没问题,说明设置完成。后续就可以在gitlab和github之间使用不同的秘钥文件来进行ssh使用啦~