【问题标题】:Permission denied error when using Github deploy keys使用 Github 部署密钥时出现权限被拒绝错误
【发布时间】:2012-05-23 09:51:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 22端口打开了吗? ssh -vT git@github.com 说什么? - help.github.com/ssh-issues
  • 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:已建立连接。

标签: git deployment github amazon-ec2 key


【解决方案1】:

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

  1. 继续使用子模块,但停止使用部署密钥,而是使用单个帐户级 SSH 密钥来授予对所有私有存储库的访问权限(更简单,安全性更低)
  2. 停止使用子模块,继续使用部署密钥,并手动 git clone 每个存储库传递与部署密钥匹配的 SSH 私钥(更复杂、更安全)

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

希望这有帮助..

【讨论】:

  • 2年后还是没有更好的解决方案?
  • 好的,找到了:github.com/blog/…
  • 不过,@aledalgrande 并不是真正的解决方案。它迫使我使用令牌而不是 ssh 密钥。
  • @aledalgrande 2020 这实际上仍然是一个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 2012-01-18
相关资源
最近更新 更多