gitlab/github仓库使用不同的ssh

gitlab/github仓库使用不同的ssh

Posted by qin4zhang on December 14, 2019

注意

想法及时记录,实现可以待做。

gitlab/github仓库使用不同的ssh

每个公司都会有自己的git仓库,比如常见的gitlab仓库,而作为开发人员,经常会去社区使用的是github仓库,那么如果需要有不同的秘钥来进行ssh使用这两个不同的残留,该怎么办呢?

本文以Mac为主。

秘钥文件

  1. 在~/.ssh目录下,查看是否存在id_rsa文件,或者是类似的命名都可以。
# 查看是否存在 .ssh 目录
ls ~ -a  # 列出所有文件,看是否含有 .ssh

# 如果存在 .ssh 目录,查看是否存在 id_rsa、 id_rsa.pub 文件
ls ~/.ssh -a

  1. 如果没有.ssh目录,或者是没有id_rsa文件
mkdir .ssh # 如果没有 .ssh 目录
cd .ssh
# 如果没有 id_rsa、 id_rsa.pub 文件,运行下面的命令, 并一路回车
ssh-keygen -t rsa -C "your_email@example.com" 
  1. 打开 自己的 github。 settings -> SSH and GPG keys -> New SSH key。
  2. 将本地刚刚生成的 ~/.ssh/id_rsa.pub 里面的内容拷贝到 New SSH key 的Key里面。

想要多个秘钥文件

在上述生成秘钥的环节,不要一路按回车,而是在选择保存文件的时候,可以重写秘钥文件名称,比如可以修改为id_rsa.github,那么公钥肯定是id_rsa_github.pub

gitlab和github等如何选择使用对应的秘钥文件呢?

  1. 打开 ~/.ssh/config 文件 如果没有就新建一个。
  2. 编辑 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

检测是否设置完成呢?

  1. 对弈github
ssh -T git@github.com
  1. 对于gitlab
ssh -T git@gitlib.com

检测没问题,说明设置完成。后续就可以在gitlab和github之间使用不同的秘钥文件来进行ssh使用啦~