我想知道是否有人有一个好的,干净的,安全的方式来管理服务器上的github组织存储库访问?
您似乎只能将酒吧密钥附加到您的个人帐户,并且不能仅限访问某个组织。
我们有一个测试版服务器,我们放置了多个项目以便部署密钥,因为它们需要是唯一的,并不理想。给全组织访问组织会很好,但我不想让我们有自由职业者的服务器完全访问我的个人帐户(服务器可以访问组织,这很好,但也我个人的项目和我所属的其他组织,这很糟糕。
我看到的两个解决方法是设置一个虚拟github用户来完成,这看起来很愚蠢,或启用ssh代理转发,这感觉像是一个安全风险(我不是最好的服务器管理员)
一位朋友建议将服务器设置为远程推送,但它似乎是一种创可贴解决方案。
我认为有一种更简单的方法可以为组织的回购设置访问权限,因为我认为这对所有人来说都是一项基本需求。
如果有人愿意与他们的github组织分享一些有用的东西,我会全力以赴。
我可能只是咬紧牙关并创建一个虚拟的github用户,并且称它为一天,我需要完成工作。
答案 0 :(得分:7)
来自sergey_mo的答案的另一种选择(以及作为MichałSzajbe最后一个问题的直接答案)是创建多个ssh密钥,如chalien在githib上所记录的那样:
答案 1 :(得分:3)
我不明白为什么添加虚拟帐户对于自动部署来说是如此糟糕,只要您在推送到GitHub之前将自己的beta服务器作为暂存区域运行。也就是说,如果你想要betacode是私有的。
通常的GitHub方式是添加所有协作者,只需要一个稳定的项目和一个beta分叉。您将自动将当前测试版本提取到测试版服务器进行测试(不需要ssh密钥),如果测试成功,则将合并从beta分支拉到稳定项目。
答案 2 :(得分:2)
关于CI的小说:
例如,如果您使用Jenkins并且需要它来访问超过1个项目,您将需要:
1.将公钥添加到一个github用户帐户
2.将此用户添加为所有者(以访问所有项目)或作为每个项目中的协作者。
一个系统用户的许多公钥将无法工作,因为GitHub将找到第一个匹配的部署密钥,并将发回错误,如“错误:用户/ repo2拒绝用户/ repo1的权限”
答案 3 :(得分:0)
您可以通过让应用程序由不同的用户(每个应用程序一个用户)运行来解决此问题。我的意思是服务器用户,而不是github用户。无论如何,在多应用服务器上这是一个很好的做法。
每个用户都有自己的ssh密钥对,因此您有许多独特的部署密钥(每个github repo一个)。
我尽可能使用这种方法。但是,有些情况下,单个用户运行多个应用程序,并且可能无法使用github的部署密钥完成。我也在寻找这种情况的良好解决方案。