인스턴스 SSH 인증서 API
GitLab v19.5Offering: GitLab Self-Managed
요약
이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 이 API를 사용하여 인스턴스가 신뢰하는 SSH 인증 기관(CA) 공개 키를 관리합니다. key 속성에는 개인 키나 서명된 사용자 인증서가 아니라 CA 공개 키가 들어갑니다.
이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참고합니다. 이 기능은 테스트용으로 사용할 수 있지만 프로덕션 사용에는 아직 적합하지 않습니다.
이 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이 레코드를 삭제하지 못했습니다. |