git为仓库配置单独的ssh-key

为了跳过输入密码的流程,服务器上如果使用git部署,一般使用deploy key,但是如果一台机器需要同时部署多个项目的话,默认情况下所有项目都会使用相同的ssh-key,但是GitHub并不支持不同的repo拥有相同的deploy key。

通过对ssh进行一些设置可以实现不同repo使用不同的ssh-key。

主要原理是通过host域名的不同来识别

例如,本来repo的git地址为git@github.com:wangsijie/awesome,为其配置一个专用的ssh-key,而不是使用系统默认的ssh-key的步骤如下:

创建一个新的ssh-key

1
ssh-keygen

Enter file in which to save the key这一行出现后,填写一个特别的名字单独存储这个key,而不是覆盖默认,比如可填写/home/work/.ssh/id_rsa_awesome,其他选项根据实际情况填写,可全部默认

配置Host与key的映射

新建文件~/.ssh/config

1
2
3
Host awesome.github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa_awesome

有了上面的配置,当git遇到awesome.github.com这个域名的时候,会自动转发到github.com,并使用id_rsa_awesome这个ssh-key

修改repo地址

本来repo的git地址为 git@github.com:wangsijie/awesome,这里需要进行修改,把域名改为 awesome.github.com,于是完整地址变为:

1
git@awesome.github.com:wangsijie/awesome

用这个地址进行正常的clone、push、pull等操作,就会自动的使用id_rsa_awesome这个ssh-key了

文章作者: 王思捷
文章链接: https://sijie.wang/2019/01/21/git-repo-private-key/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 我爱平铺