GitHub的访问令牌与私人仓库只读访问

Dav*_*edy 7 git github node.js

我有一个私人Git仓库节点依赖关系的项目。我需要能够运行npm install而不会被提示输入密码,或允许SSH连接,所以我使用的令牌,我在我的package.json在GitHub上创建一个访问:

  "dependencies": {
    "sass-theme": "git+https://[token]:x-oauth-basic@github.com/MyOrg/sass-theme.git#v1.0.2",
    "node-sass": "^4.5.0"
  }
Run Code Online (Sandbox Code Playgroud)

该项目是与其他几十人的共享,所以很明显,我不想让我的令牌源控制。我知道我可以创建在GitHub上一个只读的部署重点,但我相信这将需要其他开发人员导入SSH密钥在本地生成项目。

是否有可能创建一个访问令牌可以共享,但已只读访问克隆库?

Seb*_*aan 17

部署密钥是必经之路。默认情况下,它们不允许写入访问,并且它们的范围仅限于特定存储库(与 GitHub 个人访问令牌不同)。因此,您现在可以生成私钥/公钥对,将其设置为 GitHub 中单个存储库上的只读/仅拉部署密钥,并在 CI 中使用私钥。

例如运行 bash 脚本:

eval "$(ssh-agent -s)";
ssh-add <your private deploy key>;
Run Code Online (Sandbox Code Playgroud)

现在,您的 CI 有权在构建期间访问私有存储库。

您可以通过转到 Github 上的存储库,然后单击“设置” > “部署密钥” > “添加部署密钥”来添加部署密钥

  • 部署密钥很棒,但不幸的是据我所知它们只能用于 SSH 访问 - 不能用于 HTTPS 访问。这在只允许 HTTPS 通信的环境中毫无用处。 (14认同)
  • @pabouk 好点,部署密钥是 SSH 密钥。 (4认同)

Al *_*ill 6

最简单的方法我能想到的创建令牌提供读取私人回购唯一途径是

  1. 有谁只有给定的私人回购的读访问的用户(理想情况下,没有多少人)
  2. 由于该用户/已为该用户创建“回购”的范围令牌的个人身份验证

这将是最好的,如果他们没有对其他机构单位/回购等回购访问,因为这本质范围给出了任何回购该用户控件的完全控制。

我知道一个企业解决方案,我们将做到这一点可能与系统ID,我不知道到底是什么用户帐户的类型可能是在github.com提供实际的,但我会先检查服务条款。

  • 协作者不能对私有存储库具有只读访问权限,您必须授予他们写入访问权限。 (4认同)
  • github 没有对私有仓库的默认只读访问权限,这一事实是相当荒谬的。我现在必须为额外的用户付费才能授予此类访问权限。 (3认同)
  • 对赫伯特评论的澄清:如果存储库位于组织内部,您可以指定要向私有存储库中的协作者提供哪种访问权限。这是文档:https://docs.github.com/en/rest/reference/collaborators#add-a-repository-collaborator (2认同)