Github 添加其他人的 SSH 密钥将授予对所有存储库的访问权限?

Posted

技术标签:

【中文标题】Github 添加其他人的 SSH 密钥将授予对所有存储库的访问权限?【英文标题】:Github add SSH key from others will grant access to all repos? 【发布时间】:2021-10-17 11:53:20 【问题描述】:

所以最近 Github 有更改政策,只允许 SSH 密钥进行身份验证

因此,我从外部贡献者向我的帐户添加了一个公共 SSH 密钥,但这是否会授予该外部贡献者对我所有具有读/写权限的存储库的完全访问权限?

这个外部贡献者应该只能访问我帐户中的某些存储库,而不是其他存储库。

所以我担心的是,这个添加的 SSH 密钥会允许她拥有完全访问权限吗? 请帮助我理解,添加 SSH 密钥究竟会如何损害帐户安全?

提前致谢。

【问题讨论】:

【参考方案1】:

GitHub 并没有更改为只允许 SSH 密钥进行身份验证。 GitHub 过去曾允许用户通过 HTTPS 使用用户名和密码,如果他们不使用 2FA、通过 HTTPS 的用户名和个人访问令牌或使用 SSH 密钥的 SSH。唯一改变的是您不能再使用 HTTPS 的用户名和密码;如果您希望使用 HTTPS,则必须使用个人访问令牌而不是密码。

如果您向其他用户提供一个您的个人访问令牌或将他们的一个 SSH 密钥添加到您的帐户,他们将有权访问您的所有存储库。这是不安全的,所以你不应该这样做。

相反,您应该使用“管理访问”界面授予您的贡献者访问权限,并确保他们可以使用自己的帐户访问存储库。如果他们使用的是 HTTPS,那么他们可能需要通过将 URL 更改为 git remote set-url git@github.com/owner/name.git(替换 ownername)或仅使用 follow the directions outlined in this answer 来切换到 SSH。

贡献者无法访问自己的帐户这一事实是他们需要解决的问题,而不是让他们访问您的帐户。

【讨论】:

【参考方案2】:

是的,将其他人的 ssh 密钥放入您的帐户将使他们能够完全访问您的所有存储库。

如果您想授予其他人访问您的存储库的权限,请不要在任何地方添加他们的 ssh 密钥。只需在您的存储库上设置访问权限以授予对其 github 帐户的访问权限。您可以通过转到“设置”然后选择“管理访问”来找到访问权限(这会将您带到类似https://github.com/yourname/yourrepo/settings/access 的位置)。

您将找到有关此过程的一些文档here。

【讨论】:

是的,这就是我管理访问的方式,但是Github突然改变了策略,说它不允许正常的密码验证,只允许SSH密钥 所以?您仍然没有将 ssh 密钥添加到 您的 帐户。您的协作者将他们的 ssh 密钥添加到他们的帐户。 请解释一下它应该如何工作?合作者有她的私钥和公钥,她如何访问我帐户中的某些回购?谢谢 协作者有权访问您的存储库,因为您已使用存储库的“管理访问”设置授予他们访问权限。通读我链接到的文档并尝试一下。 感谢您这么快回复,是的,我使用“管理访问”设置授予她访问权限,但这只是从昨天开始发生的,她说不能再访问它了,因为 Github 更新了政策,github.blog/…。所以这是从昨天开始发生的,那么我们现在如何管理访问?在我的帐户上添加 SSH 密钥将授予她对我所有帐户的所有读/写权限?

以上是关于Github 添加其他人的 SSH 密钥将授予对所有存储库的访问权限?的主要内容,如果未能解决你的问题,请参考以下文章

将 GitHub ssh 密钥添加到 ec2 实例

向一个GitHub repository添加协作者

如何为 Github 帐户和 Bitbucket 公司帐户添加多个 SSH 密钥

生成SSH密钥添加到GitHub

在 msysgit windows 中永久添加 SSH 密钥

添加SSH密钥到GitHub