git - 对多个 github 项目使用相同的部署 key

标签 git github ssh

Github 不允许同一个 ssh 部署 key 用于多个项目,这在某些情况下非常有用(例如 CI 服务器处理带有私有(private)子模块的项目)。我看到各种帖子似乎都在说这种限制是出于“安全原因”,但我还没有看到令人信服的解释,说明究竟会带来什么样的风险。

请注意,Github 不允许重复使用帐户级别 key 这一事实是有道理的(两个用户不应共享 key )。我质疑的只是对部署 key 的限制。

需要说明的是,我不是在寻找解决方法(创建虚拟用户、使用多个 key ……),而只是为了对部署 key 的这一限制做出合理的解释。

相关主题:

最佳答案

不幸的是,在这种情况下,github 只是误解了 key 对与帐户或项目之间的区别。

由于 key 对用于身份验证和授权,因此它实际上是一种身份。 Github 账户是另一个身份。将 github 帐户连接到 key 对有效地在基于 github 帐户的身份和 key 对身份之间建立 1:N 映射。

相反,github 强制执行项目到基于 key 对的身份的 1:N 映射。现实世界的模拟是,有一扇门授予项目访问权限,可以由许多不同的人解锁。但是,一旦他们中的任何一个人拿到了门的 key ,他们就再也无法获得任何其他门的 key 了。

如果 key 被泄露,从遏制漏洞的角度来看,不要经常重复使用 key 是有道理的。但这只是一个好的管理政策原则上防止 key 被多次使用没有多大意义。有些门的 key 永远不会重复使用,好吧,这又取决于政策


稍微复杂一点的观点是将 key 对说明为角色。您可以拥有许多 key 对,因此可以扮演许多角色。私钥对您的角色进行身份验证。

Github 的部署键映射到项目声明一个角色永远不能包含多个任务。这很少是现实的。

当然,这些都不会改变 github 允许的内容。

关于git - 对多个 github 项目使用相同的部署 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225826/

相关文章:

git - 不能忽略 .idea/workspace.xml - 不断 pop

python - 如何使用 GitPython checkout 分支

Git:一次重命名或移动所有文件

Git:将本地分支复制到另一个本地目录

php - 如何从 GitHub 推送到你的 VPS

Ant sshexec 命令资源示例

ssh - Amazon EC2 权限被拒绝(公钥)

git - 如何在不 fork 的情况下复制 gitlab/github 上的 git 存储库?

github - 部署到 dokku(repo 不存在)

git - 如何设置多个 Github 部署 key (npm、yarn)?