注意:在 cmd 下可能无法生效,尽可能的使用 git bash 或者 cmder 一类的
日常开发中,我们可能会使用不同的远程仓库来管理我们的项目:github,gitlab,gitee等。而且大家也更喜欢使用公钥的方式去免输出密码提交。虽然我们可以统一的使用同一个公钥注册到这些远端仓库,但分别使用不同的密钥更为可靠些,防止后期想要作废某远端仓库的密钥时其他仓库也受到影响。
在本地配置 ssh config 文件,不仅可以灵活的为不同仓库平台分别配置独立的密钥对儿,还可以给仓库平台的地址起个 alias。使用 gitlab 的同学可能体会过,自己公司的 gitlab 服务器域名可能太长了....
首先我们先创建三对儿秘钥,分别标示为对应的仓库平台。
#密钥对名称设为 id_rsa_githubssh-keygen -t rsa -C "github's key"#~/.ssh/id_rsa_github#~/.ssh/id_rsa_github.pub#密钥对名称设为 id_rsa_gitlabssh-keygen -t rsa -C "gitlab's key"#~/.ssh/id_rsa_gitlab#~/.ssh/id_rsa_gitlab.pub#密钥对名称设为 id_rsa_giteessh-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_githubHost gitlab.com HostName gitlab.your-company-domain.com User git Port 22 IdentityFile ~/.ssh/id_rsa_gitlabHost 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.comssh -Tv git@gitlab.comssh -Tv git@gitee.com