Skip to main content

管理 GitHub Codespaces 特定于帐户的机密

您可以在代码空间中存储要通过环境变量访问的敏感信息(如令牌)。

关于 GitHub Codespaces

的机密

你可以将开发环境机密添加到要在 codespace 中使用的个人帐户。 例如,可能希望将以下敏感信息作为机密进行存储和访问:

您可以选择哪些仓库应有权访问每个密码。 然后,您可以在为有权访问密码的仓库创建的任何代码空间中使用该密码。 若要与通过模板创建的 codespace 共享机密,需要将 codespace 发布到 GitHub 上的存储库,然后授予该存储库对该机密的访问权限。

一旦创建了密码,便可以在创建新的代码空间或重新启动代码空间时使用它。 如果已在 GitHub 上创建了机密,并且想要在当前正在运行的 codespace 中使用它,请停止 codespace,然后重启它。 有关停止 codespace 的信息,请参阅“在 GitHub Codespaces 中使用 Visual Studio Code 命令面板”。

命名密钥

以下规则适用于密码名称:

  • 密钥名称只能包含字母数字字符([a-z][A-Z][0-9])或下划线 (_)。 不允许空格。
  • 机密名称不得以 GITHUB_ 前缀开头。
  • 密码名称不能以数字开头。
  • 机密名称不区分大小写。
  • 密码名称在所创建的级别上必须是唯一的。 例如,在仓库级别创建的密钥必须在该仓库中具有唯一的名称。

如果具有相同名称的机密存在于多个级别,则级别最低的机密优先。 例如,如果组织级别密码的名称与仓库级别的密码相同,则仓库级别的密码优先。

密码的限制

最多可以为 GitHub Codespaces 存储 100 个密码。

密码大小限于 48 KB。

添加密码

  1. 在 GitHub 任意页面的右上角,单击个人资料照片,然后单击 “设置”****。

  2. 在边栏的“代码、规划和自动化”部分中,单击“ Codespaces”。

  3. 在“Codespaces 机密”右侧,单击“新建机密”。

  4. 在“名称”下,输入机密的名称。

  5. 在“Value(值)”下,输入密码的名称。

  6. 选择“Repository access(仓库访问)”下拉菜单,然后单击要访问该机密的仓库。 对每个您想要访问该机密的仓库重复操作。

    “存储库访问”下拉菜单的屏幕截图。 下拉菜单中列出了两个存储库。

  7. 单击“添加机密”。

编辑密码

您可以更新现有密码的值,也可以更改哪些仓库可以访问密码。

  1. 在 GitHub 任意页面的右上角,单击个人资料照片,然后单击 “设置”****。

  2. 在边栏的“代码、规划和自动化”部分中,单击“ Codespaces”。

  3. 在“Codespaces 机密”下,要编辑的机密右侧,单击“更新”。****

  4. 在“值”下,单击“输入新值”链接。****

    “Codespaces”/“更新机密”页面的屏幕截图。 “输入新值”链接以深橙色边框突出显示。

  5. 在“Value(值)”下,输入密码的名称。

  6. 选择“Repository access(仓库访问)”下拉菜单,然后单击要访问该机密的仓库。 对每个您想要访问该机密的仓库重复操作。

    “存储库访问”下拉菜单的屏幕截图。 下拉菜单中列出了两个存储库。

  7. (可选)要删除密码对仓库的访问权限,请取消选择仓库。

    显示包含两个存储库的列表的屏幕截图。 每个存储库都有一个选定的复选框。

  8. 单击“保存更改”。

删除密码

  1. 在 GitHub 任意页面的右上角,单击个人资料照片,然后单击 “设置”****。
  2. 在边栏的“代码、规划和自动化”部分中,单击“ Codespaces”。
  3. 在“Codespaces 机密”下,要删除的机密右侧,单击“删除”。****
  4. 阅读警告,然后单击“确定”。

使用机密

开发环境机密作为环境变量导出到用户的终端会话中。

VS Code 中终端的屏幕截图。 命令“echo $EXAMPLE_API_KEY”已返回“aBCdeFG1234567”。

生成 codespace 并运行后,可以使用开发环境机密。 例如,机密可用于:

  • 从集成终端或 ssh 会话启动应用程序时。
  • 在 Codespace 开始运行后运行的开发容器生命周期脚本中。 有关开发容器生命周期脚本的详细信息,请参阅开发容器网站上的相关文档:规范

在以下情况下,不能使用开发环境机密:

  • codespace 生成时(即,在 Dockerfile 或自定义入口点内)。
  • 在开发容器功能内。 有关详细信息,请参阅开发容器网站上的开发容器规范中的 features 属性。

延伸阅读