GPG로 커밋 서명하기
GPG로 커밋 서명하기
git에는 저장소에 커밋을 푸시할 수 있는 사람을 통제하는 인증 레이어가 있지만, 실제 커밋 작성자를 인증하지는 않아요.
출처: 문서
본문
다시 말해 Elon Musk <[email protected]>으로 커밋을 만들고, 선호하는 git 호스트(예: github.com)에 푸시하면, 커밋이 Elon의 GitHub 프로필에 연결돼요. (한번 해보세요! 하지만 Elon이 흉내 낸 걸 화내도 탓하지 마세요.)
우리가 GPG 서명을 구현한 이유는 다음과 같아요.
- 점점 더 많은 Enterprise 사용자가 Hub에 의존함에 따라 더 세분화된 보안을 제공하기 위해
- 암호학적으로 안전한 출처 기반의 ML 벤치마크를 제공하기 위해
자세한 맥락은 Ale Segala의 How (and why) to sign git commits를 참고하세요.
GNU Privacy Guard(GPG)와 키 서버로 커밋이 당신이 작성했음을 증명할 수 있어요. GPG는 메시지 출처의 진위를 검증하는 데 사용하는 암호화 도구예요. 아래에서 Hugging Face에 이를 설정하는 방법을 설명할게요.
Pro Git 책은 커밋 서명에 대한 좋은 자료예요: Pro Git: Signing your work.
서명 커밋 검증 설정하기
다음 명령을 실행하려면 시스템에 GPG를 설치해야 해요.
대부분의 Linux 배포판에는 기본 포함돼 있어요. Windows에서는
gitfor Windows에 포함된 Git Bash에 들어 있어요.
GPG로 로컬에서 커밋에 서명할 수 있어요. 그런 다음 프로필을 구성해 Hub에서 이 커밋을 verified(검증됨)로 표시하면, 다른 사람들이 신뢰할 수 있는 출처에서 온 것임을 확신할 수 있어요.
git과 GPG가 어떻게 상호작용하는지 더 깊이 이해하려면 git 문서를 방문하세요.
커밋은 다음 서명 상태를 가질 수 있어요.
| 상태 | 설명 |
|---|---|
| Verified | 커밋이 서명되었고 서명이 검증됨 |
| Unverified | 커밋이 서명되었지만 서명을 검증할 수 없음 |
| No signing status | 커밋이 서명되지 않음 |
커밋이 verified로 표시되려면, 서명에 사용된 공개 키를 Hugging Face 계정에 업로드해야 해요.
gpg --list-secret-keys 명령으로 공개 키와 개인 키를 모두 가진 GPG 키를 나열하세요.
커밋이나 태그를 서명하려면 개인 키가 필요해요.
GPG 키 쌍이 없거나 기존 키로 커밋을 서명하고 싶지 않다면, 새 GPG 키 생성으로 가세요.
그렇지 않으면 계정에 GPG 키 추가로 바로 이동하세요.
새 GPG 키 생성
GPG 키를 생성하려면 다음을 실행하세요.
gpg --gen-key
GPG가 GPG 키 쌍 생성 과정을 안내해요.
이 키에 이메일 주소를 지정하고, 그 이메일 주소가 Hugging Face 계정에 지정한 것과 일치하는지 확인하세요.
계정에 GPG 키 추가
-
먼저 컴퓨터에서 GPG 키를 선택하거나 생성하세요. 키의 이메일 주소가 Hugging Face 계정의 이메일과 일치하고, 계정 이메일이 검증되었는지 확인하세요.
-
선택한 키의 공개 부분을 내보내세요.
gpg --armor --export <YOUR KEY ID>
- 그런 다음 프로필 설정 페이지를 방문해 Add GPG Key를 클릭하세요.
gpg --export 명령의 출력을 텍스트 영역에 복사·붙여넣고 Add Key를 클릭하세요.
- 축하해요! 🎉 계정에 GPG 키를 방금 추가했어요!
git이 GPG로 커밋을 서명하도록 구성
마지막 단계는 git이 커밋에 서명하도록 구성하는 거예요.
git config user.signingkey <Your GPG Key ID>
git config user.email <Your email on hf.co>
그런 다음 git commit 명령에 -S 플래그를 추가해 커밋에 서명하세요!
git commit -S -m "My first signed commit"
Hub에 푸시하면 커밋에 "Verified" 배지가 표시되는 것을 볼 수 있어요.
[!TIP] 컴퓨터의 모든 로컬 저장소에서 기본으로 모든 커밋에 서명하려면
git config --global commit.gpgsign true를 실행하면 돼요.
더 알아보기 (Learn more)
git 커밋은 작성자를 스스로 증명하지 않으므로, GPG로 서명해 신뢰할 수 있는 출처임을 보장해요. gpg --gen-key로 키를 만들고, 공개 키를 Hugging Face 설정에 추가한 뒤 git config user.signingkey와 -S 플래그로 서명하면 돼요. Verified 배지가 뜨면 검증된 커밋이에요.