在github组织存储库上管理ssh公钥

qnakjoqk  于 2023-03-21  发布在  Git
关注(0)|答案(5)|浏览(127)

我想知道是否有人有一个好的,干净的,安全的方法来管理github组织存储库访问他们的服务器?
似乎您只能将公钥附加到您的个人帐户,而不能将访问权限仅限于组织。
我们有一个测试版服务器,我们把多个项目,所以部署密钥,因为他们需要是唯一的,不是理想的。这将是很好给予全球访问组织,但我不想给服务器,我们有自由职业者,完全访问我的个人帐户(服务器可以访问组织,这很好,但也可以访问我的个人项目和我所属的每个其他组织,这很糟糕)。
我看到的两个解决方案是设置一个虚拟的github用户来通过,这看起来很愚蠢,或者启用ssh代理转发,这感觉像是一个安全风险(我不是最好的服务器管理员)。
一位朋友建议将服务器设置为远程推送,但这似乎是一个创可贴的解决方案。
我认为有一种更简单的方法来设置对组织的存储库的访问,因为我认为这对每个人来说都是一个基本的需求。
如果有人想分享一些在他们的github组织中有用的东西,我会洗耳恭听。
我可能会咬紧牙关,创建一个虚拟的github用户,然后收工,我需要完成工作。

xhv8bpkk

xhv8bpkk1#

sergey_mo的答案的另一种选择(也是MichałSzajbe最后一个问题的直接答案)是创建多个ssh密钥,如chalien在githib上所述:
https://gist.github.com/jexchan/2351996

xjreopfe

xjreopfe2#

我不明白为什么添加一个虚拟账户对自动部署如此不利,只要你在推送到GitHub之前运行自己的beta服务器作为暂存区,也就是说,如果你想beta码是私有的。
通常的GitHub方式是添加所有的合作者,并简单地拥有一个稳定项目和一个beta分支。你会自动将当前的beta版本拉到你的beta服务器上进行测试(那里不需要ssh密钥),如果你的测试成功,你会将beta分支中的合并拉到稳定项目中。

mzsu5hc0

mzsu5hc03#

关于CI的小提示:
例如,如果你使用Jenkins,并且你需要它来访问多个项目,那么你需要:
1.将公钥添加到一个github用户帐户
2.将此用户添加为所有者(以访问所有项目)或每个项目中的协作者。
一个系统用户的多个公钥将无法工作,因为GitHub将找到第一个匹配的部署密钥,并将返回错误,如**“ERROR:对用户/repo 2的权限被用户/repo 1拒绝”**
http://help.github.com/ssh-issues/

lsmepo6l

lsmepo6l4#

你可以通过让不同的用户(每个应用一个用户)运行你的应用来解决这个问题。我指的是服务器用户,而不是github用户。无论如何,在多应用服务器上这是一个很好的实践。
每个用户都有自己的ssh密钥对,所以你有很多唯一的deploy密钥(每个github仓库一个)。
我尽可能地使用这种方法。然而,当一个用户运行多个应用程序时,可能无法使用github的deploy密钥。我也在寻找一个好的解决方案来解决这种情况。

kgsdhlau

kgsdhlau5#

似乎您只能将公钥附加到您的个人帐户,而不能将访问权限仅限于组织。
实际上,在2023年3月,您可以:

SSH Certificate requirement update(2023年3月)

“要求SSH证书”策略现在允许GitHub应用使用用户到服务器令牌调用Git API,使其与OAuth应用支持不相上下。
SSH证书要求要求组织中的用户使用组织颁发的SSH证书调用Git API,而不是使用自己的SSH密钥或PAT。
为了支持自动化,它为OAuth应用和GitHub应用服务器到服务器令牌设置了一个例外,允许您批准的应用为您的组织调用Git API。
通过这一更改,我们将该例外扩展到GitHub应用用户到服务器令牌,即当用户登录到安装在您组织中的GitHub应用时。

当企业级设置要求跨企业中的所有组织使用SSH证书时,此更改也适用。
要了解更多信息,请参阅:

  • “管理组织的SSH证书颁发机构”或
  • “管理企业的SSH证书颁发机构”。

相关问题