GitHub - 在单个服务器上使用多个部署密钥

时间:2018-06-02 12:35:47

标签: bash git apache github ssh

背景

我有一个系统,当我将更改推送到我的存储库时,一个Web钩子向我的站点发送一个请求,该请求运行一个bash脚本来提取更改并复制任何更新的文件。

我添加了第二个存储库,其中包含自己的部署密钥,但在执行此操作后,我在尝试提取更改时收到了权限被拒绝错误。

问题

有没有办法在同一台服务器上使用2个部署密钥?

环境详情

  • 网站使用Laravel 5.6,Symfony用于运行shell脚本
  • Git 1.7
  • 去爸爸网络托管(基本Linux一个)

备注

  • 脚本只运行git pull命令
  • 给出的错误是“Permission denied(publickey)”
  • SHH用作部署密钥,因此只有读访问权限,还有一个项目也使用同一服务器上的部署密钥

提前感谢您的帮助!欢迎任何其他建议!

编辑#1

编辑帖子以反映真实问题,因为它与我的不同(如果这是不好的做法,请随意回复),请参阅下面的答案了解详情和解决方案

2 个答案:

答案 0 :(得分:0)

我认为身份验证的问题是什么实际上git服务的问题是不知道使用哪个ssh密钥,因为我在服务器上有多个。

解决方案是在.ssh文件夹中使用配置文件并指定别名以指定在单独的存储库中用于git操作的ssh密钥。

解决方案在这里:Gist with solution

这个要点解释了一般的想法,它建议使用子域,但是进一步向下的注释使用的是看似更整洁的别名。

我现在已经解决了这个问题,系统运行正常,只有一个只读密码,无密码的部署密钥。

答案 1 :(得分:0)

这可以通过自定义GIT_SSH_COMMAND来完成。由于ssh .config仅获取主机,因此您必须创建别名以处理不同的路径。另外,作为GIT_SSH_COMMAND的git CLI sends the path of the repo,您可以在git和ssh之间添加的自定义脚本中拦截请求。

您可以创建一个解决方案,在其中提取路径并添加相关的身份文件(如果在服务器上可用)。

可以找到一种执行此操作的方法here

用法:

cp deploy_key_file ~/.ssh/git-keys/github-practice
GIT_SSH_COMMAND=custom_keys_git_ssh git clone git@github.com:github/practice.git