Github: 使用 ssh 密钥仅在一个存储库或组织中使用

Github: Use ssh key to use in only one repository or organization

是否可以创建一个只能访问一个存储库或一个组织的 SSH 密钥,而其他所有的都将被拒绝?

例如,您可以访问这 4 个存储库:

git@github.com:MyUser/repo-u1.git
git@github.com:MyUser/repo-u2.git
git@github.com:OrgRepo/repo-o1.git
git@github.com:OrgRepo/repo-o2.git

第一种情况:

您创建了一个只能访问 OrgRepo 的 ssh 密钥。因此,如果密钥被盗并被黑客入侵,黑客只能访问 OrgRepo/repo-o1.gitOrgRepo/repo-o2.git,但如果他试图克隆 MyUser/repo-u1.gitMyUser/repo-u1.git 将被拒绝。

第二种情况:

您创建了一个只能访问 MyUser/repo-u2.git 的 ssh 密钥。因此,如果密钥被盗并被黑客入侵,黑客只能访问 MyUser/repo-u2.git 但其他 3 个存储库将被拒绝。

GitHub 没有提供您想要的,但它确实提供了一些类似的功能。

首先,如果您的组织使用的是单一 SAML sign-on,则必须为 SSO 显式启用 SSH 密钥,然后它才能访问该组织的存储库。同样,也必须为 SSO 启用个人访问令牌。没有反向功能,阻止 organization-enabled 凭据访问个人资源。

其次,如果您有一个自动化系统,例如 CI 服务器,它只需要访问一个存储库,您可以创建一个 SSH 部署密钥以仅访问该存储库。这不是个人使用的好工具,因为它缺乏可追溯性,但它是自动化系统的好工具。

除此之外,不,GitHub 没有提供您要查找的内容。

对于第二种情况,请查看 deploy keys,您可以在 per-repo 的基础上限制 SSH 密钥访问。