2012-05-15 109 views
6

所以我有一个项目(私人回购),它有多个子模块(也是私有的)。我有一台托管在亚马逊EC2上的服务器,它将容纳该项目,并且我想使用我们的私人Github回购。使用Github部署密钥时,权限被拒绝错误

我为主项目生成了一个ssh密钥并将其添加到项目部署密钥中。我还为每个子模块生成了额外的ssh密钥并将其添加到其部署密钥中。

当我尝试和克隆项目(用git @ github上),这是行不通的:

权限被拒绝(公钥)。 致命:远端意外挂断

我已经双重检查了每个回购和他们的部署密钥,一切似乎都正确。还有其他一小步我失踪了吗?

+0

端口22是否打开? 'ssh -vT git @ github.com'说什么? - http://help.github.com/ssh-issues/ –

+0

后继结果(下) –

+0

OpenSSH_5.3p1,OpenSSL 1.0.0i-fips 2012年4月19日 debug1:读取配置数据/ etc/ssh/ssh_config debug1 :应用* 的选项debug1:连接到github.com [207.97.227.239]端口22. debug1:建立连接。 –

回答

6

简短的回答:有没有简单的方法来使用部署密钥与私人子模块。根据我的经验,你有两个选择:

  1. 继续使用子模块,但停止使用部署密钥,并改用授予您的所有私人信息库访问单个帐户级SSH密钥(更方便,更安全)
  2. 停止使用子模块,继续使用部署密钥,并手动git clone每个存储库通过在部署键(棘手,更安全)

这样做的原因是git clone触发只能用SSH连接相匹配的SSH私钥在一个单一的SSH私钥时间(例如,的〜/ .ssh/id_rsa)。正在使用的SSH私钥必须与存储库的部署密钥相匹配,并且每个项目的部署密钥必须是唯一的。在子模块克隆的情况下,您只使用一个私钥。该键可能与您的顶级项目匹配,但肯定会因您提供的错误而失败。

希望这会有帮助..

+1

2年后还没有更好的解决方案? – aledalgrande

+3

好的,找到它了:https://github.com/blog/1270-easier-builds-and-deployments-using-git-over-https-and-oauth – aledalgrande