git/ssh 配置管理多个密钥

原创
2018/02/09 17:53
阅读数 772

注意:在 cmd 下可能无法生效,尽可能的使用 git bash 或者 cmder 一类的

日常开发中,我们可能会使用不同的远程仓库来管理我们的项目:github,gitlab,gitee等。而且大家也更喜欢使用公钥的方式去免输出密码提交。虽然我们可以统一的使用同一个公钥注册到这些远端仓库,但分别使用不同的密钥更为可靠些,防止后期想要作废某远端仓库的密钥时其他仓库也受到影响。

在本地配置 ssh config 文件,不仅可以灵活的为不同仓库平台分别配置独立的密钥对儿,还可以给仓库平台的地址起个 alias。使用 gitlab 的同学可能体会过,自己公司的 gitlab 服务器域名可能太长了....

首先我们先创建三对儿秘钥,分别标示为对应的仓库平台。

#密钥对名称设为 id_rsa_github
ssh-keygen -t rsa -C "github's key"
#~/.ssh/id_rsa_github
#~/.ssh/id_rsa_github.pub


#密钥对名称设为 id_rsa_gitlab
ssh-keygen -t rsa -C "gitlab's key"
#~/.ssh/id_rsa_gitlab
#~/.ssh/id_rsa_gitlab.pub

#密钥对名称设为 id_rsa_gitee
ssh-keygen -t rsa -C "gitee's key"
#~/.ssh/id_rsa_gitee
#~/.ssh/id_rsa_gitee.pub

 创建 ~/.ssh/config 文件

# Host 配置块儿 Host 为设置 git clone git@
# 
Host github.com
    HostName github.com
    User git
    Port 22
    IdentityFile ~/.ssh/id_rsa_github

Host gitlab.com
    HostName gitlab.your-company-domain.com
    User git
    Port 22
    IdentityFile ~/.ssh/id_rsa_gitlab

Host gitee.com
    HostName gitee.com
    User git
    Port 22
    IdentityFile ~/.ssh/id_rsa_gitee

如上配置,我们在本地使用 git 客户端时,就可以根据 Host 字段所表示的别名,灵活的映射到对应的密钥对儿了。

比如你使用的是自己搭建的 gitlab 仓库,还要把域名约定成公司的子平台系统,就如配置文件中的 gitlab.your-company-domain.com,太长了。

直接使用的话那仓库地址类似这样子:

git clone git@gitlab.your-company-domain.com:group-name/project-name.git

但我们这里配置了映射,Host 起到了别名的作用,在 git 客户端中可以直接使用

git clone git@gitlab.com:group-name/project-name.git

去访问对应的仓库。

# 将生成的公钥分别保存到对应的仓库平台
# 使用如下命令测试可否正常访问
ssh -Tv git@github.com
ssh -Tv git@gitlab.com
ssh -Tv git@gitee.com

 

展开阅读全文
加载中

作者的其它热门文章

打赏
1
3 收藏
分享
打赏
3 评论
3 收藏
1
分享
返回顶部
顶部