使用 Github 部署密钥时出现权限被拒绝错误



所以我有一个项目(私有存储库(,它有多个子模块(也是私有的(。我有一个托管在 Amazon EC2 上的服务器来容纳该项目,我想使用我们的私有 Github 存储库。

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

当我尝试克隆项目(使用 git@github(时,它不起作用:

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

我已经仔细检查了每个存储库及其部署密钥,一切似乎都是正确的。我是否还缺少其他一些小步骤?

简短的回答:没有简单的方法可以将部署密钥与私有子模块一起使用。 根据我的经验,您有两种选择:

  1. 继续使用子模块,但停止使用部署密钥,而是使用单个账户级 SSH 密钥,该密钥授予对所有私有仓库的访问权限(更容易,安全性较低(
  2. 停止使用子模块,继续使用部署密钥,并手动git clone传入与部署密钥匹配的 SSH 私钥的每个存储库(更棘手、更安全(

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

希望这是有帮助的..

最新更新