InfoGrab DocsInfoGrab Docs

인스턴스 SSH 인증서 API

요약

이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 이 API를 사용하여 인스턴스가 신뢰하는 SSH 인증 기관(CA) 공개 키를 관리합니다. key 속성에는 개인 키나 서명된 사용자 인증서가 아니라 CA 공개 키가 들어갑니다.

히스토리
Feature flag

이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참고합니다. 이 기능은 테스트용으로 사용할 수 있지만 프로덕션 사용에는 아직 적합하지 않습니다.

이 API를 사용하여 인스턴스가 신뢰하는 SSH 인증 기관(CA) 공개 키를 관리합니다. GitLab은 각 CA 공개 키를 데이터베이스에 저장하고 인스턴스 전체에서 신뢰하므로, sshd_config나 gitlab-sshd 구성 파일을 변경하지 않고 API 호출로 CA를 교체할 수 있습니다. 파일 기반 대안은 gitlab-sshd를 사용한 인스턴스 수준 SSH 인증서를 참고합니다.

key 속성에는 개인 키나 서명된 사용자 인증서가 아니라 CA 공개 키가 들어갑니다.

인증 및 사용 가능 여부#

모든 엔드포인트는 REST API로 인증된 관리자가 필요합니다. 인스턴스에서 Admin Mode가 활성화된 경우 개인 액세스 토큰 또는 OAuth 토큰의 admin_mode 스코프를 포함해 기존 Admin Mode 요구 사항이 적용됩니다.

GitLab은 기능 사용 가능 여부보다 먼저 인증과 관리자 액세스를 확인합니다. 다음 오류는 기능 플래그가 비활성화된 경우에도 모든 엔드포인트에 적용됩니다.

상태 설명
401 Unauthorized 요청이 인증되지 않았습니다.
403 Forbidden 인증된 사용자에게 관리자 액세스 권한이 없습니다.
404 Not Found 사용자에게 관리자 액세스 권한이 있지만 기능을 사용할 수 없습니다.

모든 인스턴스 SSH 인증서 목록 조회#

모든 인스턴스 SSH CA 공개 키 레코드를 ID 내림차순으로 나열합니다.

GET /admin/ssh_certificates

이 엔드포인트는 표준 페이지네이션을 지원합니다.

속성 타입 필수 여부 설명
page integer 아니요 조회할 페이지. 기본값: 1.
per_page integer 아니요 페이지당 레코드 수. 기본값: 20. 최댓값: 100.

성공하면 200 OK와 다음 응답 속성을 가진 객체의 배열을 반환합니다.

속성 타입 설명
created_at string 레코드가 생성된 날짜와 시간(ISO 8601 형식).
fingerprint string SSH CA 공개 키의 SHA256 지문.
id integer 인스턴스 SSH 인증서 레코드의 ID.
key string SSH CA 공개 키.
title string 레코드의 제목.

요청 예시:

curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/admin/ssh_certificates?page=1&per_page=20"

응답 예시(<ca_public_key>는 전체 SSH CA 공개 키를 나타냅니다):

[
  {
    "id": 2,
    "title": "Engineering CA",
    "key": "<ca_public_key>",
    "fingerprint": "<ca_public_key_fingerprint>",
    "created_at": "2026-09-08T12:39:00.172Z"
  },
  {
    "id": 1,
    "title": "Operations CA",
    "key": "<ca_public_key>",
    "fingerprint": "<ca_public_key_fingerprint>",
    "created_at": "2026-09-08T11:30:00.000Z"
  }
]

결과가 비어 있으면 []를 반환합니다.

인스턴스 SSH 인증서 추가#

인스턴스 SSH CA 공개 키 레코드를 추가합니다.

POST /admin/ssh_certificates
속성 타입 필수 여부 설명
key string 예 SSH CA 공개 키. 비워 둘 수 없습니다. 최대 5,000자.
title string 예 레코드의 제목. 비워 둘 수 없습니다. 최대 255자.

성공하면 201 Created와 다음 응답 속성을 반환합니다.

속성 타입 설명
created_at string 레코드가 생성된 날짜와 시간(ISO 8601 형식).
fingerprint string SSH CA 공개 키의 SHA256 지문.
id integer 인스턴스 SSH 인증서 레코드의 ID.
key string SSH CA 공개 키.
title string 레코드의 제목.

CA 공개 키가 /path/to/ca_key.pub에 있는 경우의 요청 예시:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --data-urlencode "title=Engineering CA" \
  --data-urlencode "key@/path/to/ca_key.pub" \
  --url "https://gitlab.example.com/api/v4/admin/ssh_certificates"

응답 예시:

{
  "id": 2,
  "title": "Engineering CA",
  "key": "<ca_public_key>",
  "fingerprint": "<ca_public_key_fingerprint>",
  "created_at": "2026-09-08T12:39:00.172Z"
}

공통 인증 및 사용 가능 여부 오류 외에 이 엔드포인트는 다음을 반환할 수 있습니다.

상태 설명
400 Bad Request 필수 파라미터가 없거나 title 또는 key가 최대 길이를 초과합니다.
422 Unprocessable Entity 값이 비어 있거나 유효하지 않습니다. 키 지문이 중복되거나, SSH 키 제한 또는 연방 정보 처리 표준(FIPS) 제한에 의해 키가 거부된 경우에도 반환됩니다.

인스턴스 SSH 인증서 삭제#

지정한 인스턴스 SSH CA 공개 키 레코드를 삭제합니다.

DELETE /admin/ssh_certificates/:id
속성 타입 필수 여부 설명
id integer 예 인스턴스 SSH 인증서 레코드의 ID.

성공하면 204 No Content와 빈 응답 본문을 반환하며 응답 속성은 없습니다.

요청 예시:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/admin/ssh_certificates/2"

공통 인증 및 사용 가능 여부 오류 외에 이 엔드포인트는 다음을 반환할 수 있습니다.

상태 설명
404 Not Found 지정한 ID의 인스턴스 SSH 인증서 레코드가 없습니다.
422 Unprocessable Entity GitLab이 레코드를 삭제하지 못했습니다.

인스턴스 SSH 인증서 API

GitLab v19.5
Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기

요약

이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 이 API를 사용하여 인스턴스가 신뢰하는 SSH 인증 기관(CA) 공개 키를 관리합니다. key 속성에는 개인 키나 서명된 사용자 인증서가 아니라 CA 공개 키가 들어갑니다.

히스토리
Feature flag

이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참고합니다. 이 기능은 테스트용으로 사용할 수 있지만 프로덕션 사용에는 아직 적합하지 않습니다.

이 API를 사용하여 인스턴스가 신뢰하는 SSH 인증 기관(CA) 공개 키를 관리합니다. GitLab은 각 CA 공개 키를 데이터베이스에 저장하고 인스턴스 전체에서 신뢰하므로, sshd_config나 gitlab-sshd 구성 파일을 변경하지 않고 API 호출로 CA를 교체할 수 있습니다. 파일 기반 대안은 gitlab-sshd를 사용한 인스턴스 수준 SSH 인증서를 참고합니다.

key 속성에는 개인 키나 서명된 사용자 인증서가 아니라 CA 공개 키가 들어갑니다.

인증 및 사용 가능 여부#

모든 엔드포인트는 REST API로 인증된 관리자가 필요합니다. 인스턴스에서 Admin Mode가 활성화된 경우 개인 액세스 토큰 또는 OAuth 토큰의 admin_mode 스코프를 포함해 기존 Admin Mode 요구 사항이 적용됩니다.

GitLab은 기능 사용 가능 여부보다 먼저 인증과 관리자 액세스를 확인합니다. 다음 오류는 기능 플래그가 비활성화된 경우에도 모든 엔드포인트에 적용됩니다.

상태 설명
401 Unauthorized 요청이 인증되지 않았습니다.
403 Forbidden 인증된 사용자에게 관리자 액세스 권한이 없습니다.
404 Not Found 사용자에게 관리자 액세스 권한이 있지만 기능을 사용할 수 없습니다.

모든 인스턴스 SSH 인증서 목록 조회#

모든 인스턴스 SSH CA 공개 키 레코드를 ID 내림차순으로 나열합니다.

GET /admin/ssh_certificates

이 엔드포인트는 표준 페이지네이션을 지원합니다.

속성 타입 필수 여부 설명
page integer 아니요 조회할 페이지. 기본값: 1.
per_page integer 아니요 페이지당 레코드 수. 기본값: 20. 최댓값: 100.

성공하면 200 OK와 다음 응답 속성을 가진 객체의 배열을 반환합니다.

속성 타입 설명
created_at string 레코드가 생성된 날짜와 시간(ISO 8601 형식).
fingerprint string SSH CA 공개 키의 SHA256 지문.
id integer 인스턴스 SSH 인증서 레코드의 ID.
key string SSH CA 공개 키.
title string 레코드의 제목.

요청 예시:

curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/admin/ssh_certificates?page=1&per_page=20"

응답 예시(<ca_public_key>는 전체 SSH CA 공개 키를 나타냅니다):

[
  {
    "id": 2,
    "title": "Engineering CA",
    "key": "<ca_public_key>",
    "fingerprint": "<ca_public_key_fingerprint>",
    "created_at": "2026-09-08T12:39:00.172Z"
  },
  {
    "id": 1,
    "title": "Operations CA",
    "key": "<ca_public_key>",
    "fingerprint": "<ca_public_key_fingerprint>",
    "created_at": "2026-09-08T11:30:00.000Z"
  }
]

결과가 비어 있으면 []를 반환합니다.

인스턴스 SSH 인증서 추가#

인스턴스 SSH CA 공개 키 레코드를 추가합니다.

POST /admin/ssh_certificates
속성 타입 필수 여부 설명
key string 예 SSH CA 공개 키. 비워 둘 수 없습니다. 최대 5,000자.
title string 예 레코드의 제목. 비워 둘 수 없습니다. 최대 255자.

성공하면 201 Created와 다음 응답 속성을 반환합니다.

속성 타입 설명
created_at string 레코드가 생성된 날짜와 시간(ISO 8601 형식).
fingerprint string SSH CA 공개 키의 SHA256 지문.
id integer 인스턴스 SSH 인증서 레코드의 ID.
key string SSH CA 공개 키.
title string 레코드의 제목.

CA 공개 키가 /path/to/ca_key.pub에 있는 경우의 요청 예시:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --data-urlencode "title=Engineering CA" \
  --data-urlencode "key@/path/to/ca_key.pub" \
  --url "https://gitlab.example.com/api/v4/admin/ssh_certificates"

응답 예시:

{
  "id": 2,
  "title": "Engineering CA",
  "key": "<ca_public_key>",
  "fingerprint": "<ca_public_key_fingerprint>",
  "created_at": "2026-09-08T12:39:00.172Z"
}

공통 인증 및 사용 가능 여부 오류 외에 이 엔드포인트는 다음을 반환할 수 있습니다.

상태 설명
400 Bad Request 필수 파라미터가 없거나 title 또는 key가 최대 길이를 초과합니다.
422 Unprocessable Entity 값이 비어 있거나 유효하지 않습니다. 키 지문이 중복되거나, SSH 키 제한 또는 연방 정보 처리 표준(FIPS) 제한에 의해 키가 거부된 경우에도 반환됩니다.

인스턴스 SSH 인증서 삭제#

지정한 인스턴스 SSH CA 공개 키 레코드를 삭제합니다.

DELETE /admin/ssh_certificates/:id
속성 타입 필수 여부 설명
id integer 예 인스턴스 SSH 인증서 레코드의 ID.

성공하면 204 No Content와 빈 응답 본문을 반환하며 응답 속성은 없습니다.

요청 예시:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/admin/ssh_certificates/2"

공통 인증 및 사용 가능 여부 오류 외에 이 엔드포인트는 다음을 반환할 수 있습니다.

상태 설명
404 Not Found 지정한 ID의 인스턴스 SSH 인증서 레코드가 없습니다.
422 Unprocessable Entity GitLab이 레코드를 삭제하지 못했습니다.