GPG로 커밋 서명
당신은 GitLab 리포지터리에서 만든 커밋에 GPG (GNU Privacy Guard) 키로 서명할 수 있습니다.
GitLab이 커밋을 검증하려면:
- 커미터는 GPG 공개/비공개 키 쌍을 가지고 있어야 합니다.
- 커미터의 공개 키가 GitLab 계정에 업로드되어 있어야 합니다.
- GPG 공개 키의 이메일 주소 중 하나가 커미터가 GitLab에서 사용하는 검증된 이메일 주소와 일치해야 합니다. 이 주소를 비공개로 유지하려면 프로필에서 GitLab이 제공하는 비공개 커밋 이메일 주소를 사용하십시오.
- 커미터의 이메일 주소는 GPG 키의 검증된 이메일 주소와 일치해야 합니다.
GitLab은 자체 키링을 사용하여 GPG 서명을 검증합니다. 이는 어떤 공개 키 서버에도 접근하지 않습니다.
GPG 검증된 태그는 지원되지 않습니다.
GPG에 대한 자세한 내용은 관련 주제 디렉터리을 참조하십시오.
사용자의 공개 GPG 키 보기
사용자의 공개 GPG 키를 보려면 다음 중 하나를 선택할 수 있습니다:
-
https://gitlab.example.com/<USERNAME>.gpg로 이동합니다. 사용자가 구성한 경우 GitLab이 GPG 키를 표시하고, 구성하지 않은 사용자의 경우 공백 페이지가 표시됩니다. - 사용자 프로필(예:
https://gitlab.example.com/<USERNAME>)로 이동합니다. 사용자 프로필의 우측 상단에서 View public GPG keys ()를 선택합니다. 이 버튼은 사용자가 키를 구성한 경우에만 표시됩니다.
커밋 서명 구성
커밋에 서명하려면 로컬 머신과 GitLab 계정을 모두 구성해야 합니다:
GPG 키 생성
GPG 키가 없는 경우 다음을 수행하십시오:
-
운영 체제에 GPG 설치합니다.
당신의 운영 체제에
gpg2가 설치되어 있는 경우, 이 페이지의 명령을 사용하여gpg대신gpg2를 대체하십시오. -
키 쌍을 생성하려면
gpg버전에 맞는 명령을 실행하십시오:# 기본 GPG 버전(Windows의 Gpg4win 및 macOS의 대부분)에 대한 이 명령을 사용하십시오: gpg --gen-key # 2.1.17 이상의 GPG 버전에 대한 이 명령을 사용하십시오: gpg --full-gen-key - 키가 사용할 알고리즘을 선택하거나 기본 옵션인
RSA와 RSA를 선택하려면 Enter를 누르십시오. - 비트로 키 길이를 선택하십시오. GitLab은 4096비트 키를 권장합니다.
- 키의 유효 기간을 지정하십시오. 이 값은 주관적이며 기본값은 만료가 없습니다.
- 답변을 확인하려면
y를 입력하십시오. - 이름을 입력하십시오.
- 이메일 주소를 입력하십시오. 이는 GitLab 계정의 검증된 이메일 주소와 일치해야 합니다.
- 선택 사항. 이름 뒤에 괄호로 표시할 주석을 입력하십시오.
- GPG은 지금까지 입력한 정보를 표시합니다. 정보를 편집하거나 계속하려면 O (영어에서
Okay의 의미)를 누르십시오. - 강력한 암호를 입력한 다음, 확인을 위해 다시 입력하십시오.
-
이 명령을 실행하여 개인 GPG 키 디렉터리을 보려면, 명령어를 실행하십시오. 이때
<EMAIL>을 귀하가 키를 생성할 때 사용한 이메일 주소로 대체하십시오:gpg --list-secret-keys --keyid-format LONG <EMAIL> -
출력에서
sec라인을 식별하고 GPG 키 ID를 복사하십시오. 이 ID는/문자 뒤에서 시작합니다. 이 예시에서 키 ID는30F2B65B9246B6CA입니다.sec rsa4096/30F2B65B9246B6CA 2017-08-18 [SC] D5E4F29F3275DC0CDA8FFC8730F2B65B9246B6CA uid [ultimate] Mr. Robot <your_email> ssb rsa4096/B7ABC0813E4028C0 2017-08-18 [E] -
이 명령을 실행하여 연관된 공개 키를 표시하십시오. 이때 이전 단계에서 얻은 GPG 키 ID로 대체하십시오:
gpg --armor --export <ID> -
BEGIN PGP PUBLIC KEY BLOCK및END PGP PUBLIC KEY BLOCK라인을 포함한 공개 키를 복사하십시오. 이 키는 다음 단계에서 필요합니다.
계정에 GPG 키 추가
사용자 설정에 GPG 키를 추가하려면:
- GitLab에 로그인합니다.
- 왼쪽 사이드바에서 당신의 아바타를 선택하십시오.
- 프로필 편집을 선택하십시오.
- GPG 키를 선택하십시오.
- 새 키 추가를 선택하십시오.
- 키에 당신의 공개 키를 붙여넣으십시오.
- 키를 계정에 추가하려면 키 추가를 선택하십시오. GitLab은 키의 지문, 이메일 주소, 생성 날짜를 표시합니다.
키를 추가한 후에는 수정할 수 없습니다. 그 대신 잘못된 키를 제거하고 다시 추가하십시오.
GPG 키를 Git과 연결
GPG 키를 만든 후 계정에 추가하면 Git를 이 키를 사용하도록 구성해야 합니다:
-
방금 생성한 개인 GPG 키 디렉터리을 나열하려면 이 명령을 실행하십시오. 이때 키에 대한 이메일 주소로 대체하십시오:
gpg --list-secret-keys --keyid-format LONG <EMAIL> -
sec로 시작하는 GPG 개인 키 ID를 복사하십시오. 이 예시에서 개인 키 ID는30F2B65B9246B6CA입니다.sec rsa4096/30F2B65B9246B6CA 2017-08-18 [SC] D5E4F29F3275DC0CDA8FFC8730F2B65B9246B6CA uid [ultimate] Mr. Robot <your_email> ssb rsa4096/B7ABC0813E4028C0 2017-08-18 [E] -
이 명령을 실행하여 Git이 커밋을 당신의 키로 서명하도록 구성하십시오. 이때
<KEY ID>를 GPG 키 ID로 대체하십시오:git config --global user.signingkey <KEY ID>
Git 커밋에 서명
당신의 공개 키를 계정에 추가한 후, 개별 커밋에 매뉴얼으로 서명하거나 Git을 서명 커밋을 기본으로 설정할 수 있습니다:
- 개별 Git 커밋에 매뉴얼으로 서명하려면:
-
서명하려는 커밋에
-S플래그를 추가하십시오:git commit -S -m "내 커밋 메시지" - 요청 시 GPG 키의 암호를 입력하십시오.
- GitLab에 푸시하고 당신의 커밋이 검증되었는지 확인하십시오.
-
-
모든 Git 커밋에 기본적으로 서명하도록 설정하려면 다음 명령을 실행하십시오:
git config --global commit.gpgsign true
서명 키 조건부 설정
서명 키를 작업 및 개인 사용과 같이 별도의 목적으로 유지하는 경우, .gitconfig 파일에 IncludeIf 문을 사용하여 어떤 키로 커밋을 서명할지 설정할 수 있습니다.
사전 요구 사항:
- Git 버전 2.13 이상이 필요합니다.
- 주
~/.gitconfig파일과 동일한 디렉터리에.gitconfig-gitlab와 같은 두 번째 파일을 만듭니다. - 주
~/.gitconfig파일에 GitLab 프로젝트가 아닌 작업을 위한 Git 설정을 추가합니다. -
주
~/.gitconfig파일 끝에 다음 정보를 추가합니다.# 이 파일의 내용은 GitLab.com URL에 대해서만 포함됩니다 [includeIf "hasconfig:remote.*.url:https://gitlab.com/**"] # 이 줄을 수정하여 대체 구성 파일을 가리키도록 합니다 path = ~/.gitconfig-gitlab -
대체
.gitconfig-gitlab파일에는 GitLab 리포지터리에 커밋할 때 사용할 구성 재정의를 추가합니다. 주~/.gitconfig파일의 모든 설정은 명시적으로 재정의하지 않는 한 유지됩니다. 다음 예에서는,# 대체 ~/.gitconfig-gitlab 파일 # 'gitlab.com' 문자열과 일치하는 리포지터리에 사용되는 값들로 ~/.gitconfig 내 해당 값들을 대체합니다 [user] email = you@example.com signingkey = <키 ID> [commit] gpgsign = true
GPG 키 취소
GPG 키를 무효화하려면. GPG 키의 무효화는 미래 및 과거 커밋 모두에 영향을 줍니다:
- 이 키로 서명된 과거 커밋은 확인되지 않은 것으로 표시됩니다.
- 이 키로 서명된 미래 커밋은 확인되지 않은 것으로 표시됩니다.
GPG 키를 무효화하려면:
- 왼쪽 사이드바에서 아바타를 선택합니다.
- 프로필 편집을 선택합니다.
- GPG 키 ()를 선택합니다.
- 삭제하려는 GPG 키 옆의 무효화를 선택합니다.
GPG 키 제거
GitLab 계정에서 GPG 키를 삭제하면:
- 이 키로 서명된 이전 커밋은 확인됨 상태로 유지됩니다.
- 이 키를 사용하도록 시도하는 미래 커밋(아직 푸시되지 않은 커밋 포함)은 확인되지 않습니다.
계정에서 GPG 키를 삭제하려면:
- 왼쪽 사이드바에서 아바타를 선택합니다.
- 프로필 편집을 선택합니다.
- GPG 키 ()를 선택합니다.
- 삭제하려는 GPG 키 옆의 제거 ()를 선택합니다.
미래와 과거 커밋을 모두 미확인 상태로 변경해야 하는 경우, 연관된 GPG 키를 무효화하십시오.
관련 주제
- 웹 UI에서 만든 커밋에 대한 커밋 서명 구성
- GPG 자료:
문제 해결
시크릿 키를 사용할 수 없음
시크릿 키를 사용할 수 없음 또는 gpg: 서명 실패: 시크릿 키를 사용할 수 없음 오류를 받았다면 gpg 대신 gpg2를 사용해 보십시오:
git config --global gpg.program gpg2
만약 GPG 키가 암호로 보호되어 있으며 암호 입력 프롬프트가 나타나지 않는다면, 쉘의 rc 파일(일반적으로 ~/.bashrc 또는 ~/.zshrc)에 export GPG_TTY=$(tty)를 추가하십시오.
GPG가 데이터에 대해 서명하는 데 실패했습니다
GPG 키가 암호로 보호되어 있고 다음 오류 메시지를 받았다면:
error: gpg가 데이터에 대해 서명하는 데 실패했습니다
fatal: 커밋 객체 쓰기 실패
암호 입력 프롬프트가 나타나지 않는다면, 쉘의 rc 파일(일반적으로 ~/.bashrc 또는 ~/.zshrc)에 export GPG_TTY=$(tty)를 추가하고 터미널을 다시 시작하십시오.

도움말