所以我有一个项目(私人回购),它有多个子模块(也是私人的)。我有一个托管在 Amazon EC2 上的服务器来容纳该项目,我想使用我们的私有 Github 存储库。
我为主项目生成了一个 ssh 密钥并将其添加到项目部署密钥中。我还为每个子模块生成了额外的 ssh 密钥并将其添加到它们的部署密钥中。
当我尝试克隆项目(使用 git@github)时,它不起作用:
权限被拒绝(公钥)。致命:远端意外挂断
我已经仔细检查了每个 repo 及其部署密钥,一切似乎都是正确的。我还缺少其他一些小步骤吗?
所以我有一个项目(私人回购),它有多个子模块(也是私人的)。我有一个托管在 Amazon EC2 上的服务器来容纳该项目,我想使用我们的私有 Github 存储库。
我为主项目生成了一个 ssh 密钥并将其添加到项目部署密钥中。我还为每个子模块生成了额外的 ssh 密钥并将其添加到它们的部署密钥中。
当我尝试克隆项目(使用 git@github)时,它不起作用:
权限被拒绝(公钥)。致命:远端意外挂断
我已经仔细检查了每个 repo 及其部署密钥,一切似乎都是正确的。我还缺少其他一些小步骤吗?
简短的回答:没有简单的方法可以将部署密钥与私有子模块一起使用。根据我的经验,您有两种选择:
git clone每个存储库传递与部署密钥匹配的 SSH 私钥(更棘手,更安全)这样做的原因是git clone触发了一次只能使用一个 SSH 私钥的 SSH 连接(例如 ~/.ssh/id_rsa)。使用的 SSH 私钥必须与存储库的部署密钥匹配——并且每个项目的部署密钥必须是唯一的。在子模块克隆的情况下,您只使用一个私钥。该密钥可能与您的顶级项目匹配,但在子项目中肯定会因您提供的错误而失败。
希望这有帮助..