github 仓库配置deploy key

背景介绍

需求:针对github仓库,想通过ssh key来操作。
问题:github要求不同仓库的deploy key 必须不一样,否则无法添加公钥。

当然,github这样规定是正确,方便了对仓库的精细管理,但也给配置deploy key增加一定难度。

网络上有大量文章对账户的SSH key 与 仓库的Deploy keys介绍。概括起来说就是,账户的SSH key 能够操作该账号下的任何仓库,而仓库的Deploy keys只能操作某个特定的仓库。

下面将对如何配置deploy key进行介绍,为保持文章尽量精简,不对ssh等原理性内容过多阐述。

操作流程

下面,先假设操作仓库的别名叫做 testprj,自己也可以起其他有意义的名字。

1. 生成ssh key

首先,生成项目的ssh key公钥、私钥,主要使用命令 ssh-keygen

ssh-keygen -t rsa -N '' -f /home/${USER}/.ssh/id_rsa_github_testprj -q

其中,-N 表示无密码,-f 指定文件名。

2. 将公钥添加至github项目中

在项目的settings中配置如下内容,其中:

  1. 图中1是deploy key的名字,自己随意起;
  2. 图中2是要粘贴步骤生成ssh key环节中生成的公钥id_rsa_github_testprj.pub的内容;
  3. 记得勾选 Allow write acess,给写入权限
    题外话,公钥以.pub结尾,否则的话就是私钥,一定小心了。
    在这里插入图片描述

3.修改仓库使用的Deploy key

首先,在电脑上当前用户的 .ssh 目录中修改该 config配置文件。若文件不存在,就创建它;若存在,新增相应内容。具体的内容如下

Host githubTestPrj
    Hostname github.com
    IdentityFile ~/.ssh/id_rsa_github_testprj

其中 Host后的值githubTestPrj用于给该密钥起别名,hostname指明了是针对github.com,IdentityFile指定ssh私钥的路径(不放心可以使用完整路径)。

特别说明: Host后的密钥别名,最好起一个与项目相关的名字,用来区分github上的不同项目。

最后,再在仓库代码目录下,修改**.git/config配置文件中的url**相应值

[remote "origin"]
	url = git@githubTestPrj:GITHUB_NAME/GITHUB_PROJECT_NAME.git
	fetch = +refs/heads/*:refs/remotes/origin/*

其中, githubTestPrj 是上一步Host的值,冒号后的字符串是你的项目在github的地址,格式为github的 用户名/项目名.git

特别说明,这里起关键作用的就是 githubTestPrj,指定了项目用哪个具体的密钥。然而,默认的是 github.com,不能达到区分什么项目用什么密钥的目的。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值