所以我有一个项目(私有(private)仓库),它有多个子模块(也是私有(private)的)。我有一个托管在 Amazon EC2 上的服务器来 stash 该项目,我想使用我们的私有(private) Github 存储库。
我为主项目生成了一个 ssh key ,并将其添加到项目部署 key 中。我还为每个子模块生成了额外的 ssh key ,并将其添加到它们的部署 key 中。
当我尝试克隆项目(使用 git@github)时,它不起作用:
权限被拒绝(公钥)。 fatal: 远端意外挂断
我仔细检查了每个存储库及其部署 key ,一切似乎都是正确的。我还缺少其他一些小步骤吗?
最佳答案
简短的回答:没有简单的方法将部署 key 与私有(private)子模块一起使用。根据我的经验,您有两种选择:
- 继续使用子模块,但停止使用部署 key ,而是使用单一帐户级 SSH key ,授予对所有私有(private)存储库的访问权限(更简单,安全性更低)
- 停止使用子模块,继续使用部署 key ,并手动
git clone
每个存储库传入与部署 key 匹配的 SSH 私钥(更棘手,更安全)
原因是 git clone
触发了一次只能使用一个 SSH 私钥 的 SSH 连接(例如 ~/.ssh/id_rsa)。使用的 SSH 私钥必须与存储库的部署 key 匹配——并且每个项目的部署 key 必须是唯一的。在子模块克隆的情况下,您只使用一个私钥。该 key 可能与您的顶级项目匹配,但肯定会因您提供的错误而在子项目上失败。
希望这对您有帮助..
关于git - 使用 Github 部署 key 时出现权限被拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10608285/