기존 GitHub 계정에 GPG 키 설정하는 방법 (단계별)
Source: Dev.to
GPG 키란 무엇이며 왜 중요한가?
GPG (GNU Privacy Guard)는 다음과 같은 용도로 사용되는 도구입니다:
- 커밋 및 태그에 디지털 서명하기
- 저자와 무결성을 증명하기
- 협업 프로젝트에서 보안과 신뢰성을 향상시키기
커밋 서명의 장점
- 커밋이 GitHub에서 Verified(검증됨)으로 표시됩니다
- 커밋 위조를 방지합니다
- 개발자로서 신뢰도를 높여줍니다
사전 요구 사항
- GitHub 계정
- Git 설치
- 시스템에 GPG 설치
- 터미널 접근 권한
1단계: GPG가 설치되어 있는지 확인하기
gpg --version
GPG가 설치되지 않은 경우:
Ubuntu / Debian
sudo apt update && sudo apt install gnupg
macOS (Homebrew)
brew install gnupg
Windows
공식 사이트에서 Gpg4win을 설치합니다.
2단계: 새로운 GPG 키 생성하기
gpg --full-generate-key
프롬프트가 나타나면 다음과 같이 입력합니다:
- 키 유형: RSA and RSA
- 키 크기: 4096
- 만료 기간: 필요에 따라 선택 (예:
1y혹은 무기한은0) - 이름 및 이메일: GitHub 계정과 동일한 이메일 주소 사용
- 패스프레이즈: 강력한 비밀번호를 설정하고 기억하세요
완료되면 GPG 키가 생성됩니다.
3단계: GPG 키 목록 확인 및 키 ID 복사하기
gpg --list-secret-keys --keyid-format=long
예시 출력:
/home/nyaugenya/.gnupg/pubring.kbx
----------------------------------
sec rsa3072/CBC3C9CAC3450592 2025-12-17 [SC] [expires: 2027-12-17]
DD88627124BA164FD7D531C8CBC3C9CAC3450592
uid [ultimate] nyaugenya (go!!!)
ssb rsa3072/4DB25F105F5D7F76 2025-12-17 [E] [expires: 2027-12-17]
rsa4096/ 뒤에 나오는 키 ID(예: DD88627124BA164FD7D531C8CBC3C9CAC3450592)를 복사합니다.
4단계: GPG 공개 키 내보내기
gpg --armor --export DD88627124BA164FD7D531C8CBC3C9CAC3450592
출력 전체를 복사합니다. -----BEGIN PGP PUBLIC KEY BLOCK-----와 -----END PGP PUBLIC KEY BLOCK----- 라인도 포함해야 합니다.
5단계: GPG 키를 GitHub에 추가하기
- GitHub → Settings 로 이동합니다.
- SSH and GPG keys 를 클릭합니다.
- GPG keys 섹션에서 New GPG key 를 클릭합니다.
- 복사한 공개 키를 붙여넣습니다.
- Add GPG key 를 클릭합니다.
이제 GitHub이 당신의 서명 키를 인식합니다.
6단계: Git에 GPG 키 사용을 알려주기
키 ID를 사용해 Git을 설정합니다:
git config --global user.signingkey DD88627124BA164FD7D531C8CBC3C9CAC3450592
커밋에 자동으로 서명하도록 설정합니다:
git config --global commit.gpgsign true
Git 이메일이 GitHub와 일치하는지 확인합니다:
git config --global user.email "odhiamborose466@gmail.com"
태그에도 자동으로 GPG 서명을 적용하도록 설정합니다:
git config --global tag.gpgSign true
7단계: (Linux) “GPG Failed to Sign the Data” 오류 해결
이 오류가 발생하면 다음을 실행합니다:
export GPG_TTY=$(tty)
영구적으로 적용하려면:
echo 'export GPG_TTY=$(tty)' >> ~/.bashrc
source ~/.bashrc
8단계: 서명된 커밋 만들기
전역 설정 덕분에 일반 커밋을 만들면 자동으로 서명됩니다:
git commit -m "My first signed commit"
또는 명시적으로 서명하려면:
git commit -S -m "Signed commit"
변경 사항을 푸시합니다:
git push
이제 커밋이 GitHub에서 Verified(검증됨)으로 표시됩니다.