{{< details >}}

  • Tier: 基础版,专业版,旗舰版
  • Offering: JihuLab.com, 私有化部署

{{< /details >}}

使用此 API 与用户的 SSH 和 GPG 密钥进行交互。有关更多信息,请参阅 SSH 密钥GPG 密钥

列出所有 SSH 密钥

列出您用户账户的所有 SSH 密钥。

使用 pageper_page 分页参数 来过滤结果。

先决条件:

  • 您必须已通过身份验证。
GET /user/keys

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/user/keys"

示例响应:

[
  {
    "id": 1,
    "title": "Public key",
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
    "created_at": "2014-08-01T14:47:39.080Z",
    "usage_type": "auth"
  },
  {
    "id": 3,
    "title": "Another Public key",
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
    "created_at": "2014-08-01T14:47:39.080Z",
    "usage_type": "signing"
  }
]

列出用户的所有 SSH 密钥

列出指定用户账户的所有 SSH 密钥。此端点不需要身份验证。

GET /users/:id_or_username/keys

支持的属性:

属性 类型 必需 描述
id_or_username string 用户账户的 ID 或用户名

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/users/1/keys"

获取 SSH 密钥

获取您用户账户的 SSH 密钥。此端点不需要身份验证。

GET /user/keys/:key_id

支持的属性:

属性 类型 必需 描述
key_id string 现有密钥的 ID

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/user/keys/1"

示例响应:

{
  "id": 1,
  "title": "Public key",
  "key": "<SSH_KEY>",
  "created_at": "2014-08-01T14:47:39.080Z",
  "usage_type": "auth"
}

获取用户的 SSH 密钥

获取指定用户账户的 SSH 密钥。此端点不需要身份验证。

GET /users/:id/keys/:key_id

支持的属性:

属性 类型 必需 描述
id integer 用户账户的 ID
key_id integer 现有密钥的 ID

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/users/1/keys/1"

示例响应:

{
  "id": 1,
  "title": "Public key",
  "key": "<SSH_KEY>",
  "created_at": "2014-08-01T14:47:39.080Z",
  "usage_type": "auth"
}

添加 SSH 密钥

{{< history >}}

  • usage_type 参数在 极狐GitLab 15.7 中 引入。

{{< /history >}}

为您的用户账户添加 SSH 密钥。

先决条件:

  • 您必须已通过身份验证。
POST /user/keys

支持的属性:

属性 类型 必需 描述
title string 密钥的标题
key string 公钥值
expires_at string 密钥的过期日期,ISO 格式 (YYYY-MM-DD)。
usage_type string 密钥的使用范围。可能的值:authsigningauth_and_signing。默认值:auth_and_signing

返回结果:

  • 成功时返回状态 201 Created 和已创建的密钥。
  • 返回状态 400 Bad Request 和解释错误的消息:

    {
      "message": {
        "fingerprint": [
          "has already been taken"
        ],
        "key": [
          "has already been taken"
        ]
      }
    }
    

示例响应:

{
  "title": "ABC",
  "key": "<SSH_KEY>",
  "expires_at": "2016-01-21T00:00:00.000Z",
  "usage_type": "auth"
}

为用户添加 SSH 密钥

{{< history >}}

  • usage_type 参数在 极狐GitLab 15.7 中 引入。

{{< /history >}}

为指定用户账户添加 SSH 密钥。

{{< alert type=”note” >}}

这也会添加一个审计事件。

{{< /alert >}}

先决条件:

  • 您必须具有管理员访问实例的权限。
POST /users/:id/keys

支持的属性:

属性 类型 必需 描述
id integer 用户账户的 ID
title string 密钥的标题
key string 公钥值
expires_at string 访问令牌的过期日期,ISO 格式 (YYYY-MM-DD)。
usage_type string 密钥的使用范围。可能的值:authsigningauth_and_signing。默认值:auth_and_signing

返回结果:

  • 成功时返回状态 201 Created 和已创建的密钥。
  • 返回状态 400 Bad Request 和解释错误的消息:

    {
      "message": {
        "fingerprint": [
          "has already been taken"
        ],
        "key": [
          "has already been taken"
        ]
      }
    }
    

示例响应:

{
  "title": "ABC",
  "key": "<SSH_KEY>",
  "expires_at": "2016-01-21T00:00:00.000Z",
  "usage_type": "auth"
}

删除 SSH 密钥

从您的用户账户中删除 SSH 密钥。

先决条件:

  • 您必须已通过身份验证。
DELETE /user/keys/:key_id

支持的属性:

属性 类型 必需 描述
key_id integer 现有密钥的 ID

返回结果:

  • 如果操作成功,则返回 204 No Content 状态码。
  • 如果资源未找到,则返回 404 状态码。

删除用户的 SSH 密钥

从指定用户账户中删除 SSH 密钥。

先决条件:

  • 您必须具有管理员访问实例的权限。
DELETE /users/:id/keys/:key_id

支持的属性:

属性 类型 必需 描述
id integer 用户账户的 ID
key_id integer 现有密钥的 ID

列出所有 GPG 密钥

列出您用户账户的所有 GPG 密钥。

先决条件:

  • 您必须已通过身份验证。
GET /user/gpg_keys

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/user/gpg_keys"

示例响应:

[
  {
    "id": 1,
    "key": "<PGP_PUBLIC_KEY_BLOCK>",
    "created_at": "2017-09-05T09:17:46.264Z"
  }
]

列出用户的所有 GPG 密钥

列出指定用户账户的所有 GPG 密钥。此端点不需要身份验证。

GET /users/:id/gpg_keys

支持的属性:

属性 类型 必需 描述
id integer 用户账户的 ID

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/users/2/gpg_keys"

示例响应:

[
  {
    "id": 1,
    "key": "<PGP_PUBLIC_KEY_BLOCK>",
    "created_at": "2017-09-05T09:17:46.264Z"
  }
]

获取 GPG 密钥

获取您用户账户的 GPG 密钥。

先决条件:

  • 您必须已通过身份验证。
GET /user/gpg_keys/:key_id

支持的属性:

属性 类型 必需 描述
key_id integer 现有密钥的 ID

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/user/gpg_keys/1"

示例响应:

{
  "id": 1,
  "key": "<PGP_PUBLIC_KEY_BLOCK>",
  "created_at": "2017-09-05T09:17:46.264Z"
}

获取用户的 GPG 密钥

获取指定用户账户的 GPG 密钥。此端点不需要身份验证。

GET /users/:id/gpg_keys/:key_id

支持的属性:

属性 类型 必需 描述
id integer 用户账户的 ID
key_id integer 现有密钥的 ID

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/users/2/gpg_keys/1"

示例响应:

{
  "id": 1,
  "key": "<PGP_PUBLIC_KEY_BLOCK>",
  "created_at": "2017-09-05T09:17:46.264Z"
}

添加 GPG 密钥

为您的用户账户添加 GPG 密钥。

先决条件:

  • 您必须已通过身份验证。
POST /user/gpg_keys

支持的属性:

属性 类型 必需 描述
key string 公钥值

示例请求:

export KEY="$(gpg --armor --export <your_gpg_key_id>)"

curl --data-urlencode "key=<PGP_PUBLIC_KEY_BLOCK>" \
     --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/user/gpg_keys"

示例响应:

[
  {
    "id": 1,
    "key": "<PGP_PUBLIC_KEY_BLOCK>",
    "created_at": "2017-09-05T09:17:46.264Z"
  }
]

为用户添加 GPG 密钥

为指定用户账户添加 GPG 密钥。

先决条件:

  • 您必须具有管理员访问实例的权限。
POST /users/:id/gpg_keys

支持的属性:

属性 类型 必需 描述
id integer 用户账户的 ID
key integer 公钥值

示例请求:

curl --data-urlencode "key=<PGP_PUBLIC_KEY_BLOCK>" \
     --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/users/2/gpg_keys"

示例响应:

[
  {
    "id": 1,
    "key": "<PGP_PUBLIC_KEY_BLOCK>",
    "created_at": "2017-09-05T09:17:46.264Z"
  }
]

删除 GPG 密钥

从您的用户账户中删除 GPG 密钥。

先决条件:

  • 您必须已通过身份验证。
DELETE /user/gpg_keys/:key_id

支持的属性:

属性 类型 必需 描述
key_id integer 现有密钥的 ID

返回结果:

  • 成功时返回 204 No Content
  • 如果找不到密钥,则返回 404 Not Found

删除用户的 GPG 密钥

从指定用户账户中删除 GPG 密钥。

先决条件:

  • 您必须具有管理员访问实例的权限。
DELETE /users/:id/gpg_keys/:key_id

支持的属性:

属性 类型 必需 描述
id integer 用户账户的 ID
key_id integer 现有密钥的 ID