프롤로그
언젠가 예전부터 사용하던 맥북프로에서 커밋했을 땐, 아래처럼 예쁜 VERIFIED 마크가 붙어서 나왔는데, 최근에 주력으로 사용하고 있는 맥 미니에서 커밋을 하면 태그가 붙어 있지 않은 것을 볼 수 있었습니다. 처음에는 그냥 참고 넘길까 했는데, 보다보니 없으면 뭔가 내가 비선별인원이 된 기분이라 확인 받은 사람 대열에 동승하기 위해 오늘 작업을 하게 되었습니다.
요구사항
이 포스트에서 다루는 환경은 macOS입니다. 다른 환경에서 사용하고 계신 경우, 불편하시더라도 추가적인 구글링을 통해 꼭 원하시는 성과를 얻으시길 기원합니다!
GPG Key 설정하기
큰 흐름은 여기를 따라갑니다. 다른 글들도 많이 봤는데, 계속 에러가 나서 직접 수정한 부분도 있습니다.
GNUPG, PINENTRY-MAC 설치하기
GNUPG와 PINENTRY-MAC을 설치해줍니다.
$ brew install gnupg pinentry-mac
GPG Key 생성하기
이 파트는 여기를 따라갑니다.
$ gpg --full-generate-key
# 순서대로 다음처럼 선택/입력합니다.
# 만들고자 하는 key의 종류 입력
-> 1
# keysize 입력
-> 4096
# valid 입력(언제까지 유효하게 할 것인지, 0 = 만료없음)
-> 0
# valid로 생성할 것인지 확인는 내용 입력
-> y
# 이름 입력
-> Jaewook Oh
# Github에서 사용하는 이메일 주소 입력
-> wookiist@wookiist.dev
# 남기고 싶은 코멘트 입력(입력하지 않고 Enter 치고 넘어갔습니다)
-> (Enter)
# 마지막으로 확인
-> o
여기까지 실행하셨으면, 화면이 전환되면서 새로운 암호를 입력하는 화면이 뜹니다. 새로운 암호를 입력하고 나면 암호 확인을 한 번 더 하고, 종료됩니다. 여기서 입력한 암호는 추후 한 번 더 사용해야 하니 꼭 기억해주세요.
GPG Key ID 받아오기
이 파트는 여기를 따라갑니다. 생성한 GPG Key의 ID를 확인하는 과정입니다. 아래에 나오는 예제는 GitHub 공식 문서에서 제공한 예제입니다. 제 GPG Key와는 무관합니다.
$ gpg --list-secret-keys --keyid-format=long
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid Hubot
ssb 4096R/42B317FD4BA89E7A 2016-03-10
위 결과를 얻으면 우리가 필요한 값인 GPG Key ID는 3AA5C34371567BD2
입니다.
Git Config 설정하기
이 파트는 다시 처음에 소개드린 스택오버플로우 답변을 따릅니다. 우리가 얻은 값 등을 이제 Git Config로 설정해줄 차례입니다.
우선 GPG Key ID 받아오기 파트에서 얻은 Key ID를 mac의 git config에 글로벌로 기록해둡니다. 그리고 나머지 설정도 진행해주겠습니다.
$ git config --global user.signingkey 3AA5C34371567BD2
$ git config --global commit.gpgsign true
$ git config --global gpg.program gpg
GPG Agent 설정하기
pinentry가 설치된 위치 확인하기
많은 글에서 pinentry가 설치된 위치 때문에 정상적으로 설정이 마무리 되지 않는 것을 확인할 수 있었습니다. 본인의 pinentry가 어디에 설치되었는지를 반드시 확인하시고 진행하시기 바랍니다.
제 경우에는 brew로 설치했다보니 /opt/homebrew/bin/pinentry-mac
에 위치하고 있었습니다. 다른 많은 글들에서는 /usr/local/bin/pinentry-mac
에 위치하고 있었습니다. 반드시 본인의 pinentry-mac 프로그램의 위치를 확인해주세요. 확인하는 방법은 매우 간단합니다.
$ which pinentry-mac
GPG Agent가 pinenetry-mac을 사용할 수 있도록 설정 파일에 아래의 내용을 추가해줍니다. 아래 명령어를 사용하면 별도로 설정 파일을 열지 않아도 바로 입력됩니다.
단, 입력 전에 반드시 다시 한번 더 확인하세요! 본인의 pinentry-mac의 위치를 아래의 /opt/homebrew/bin/pinentry-mac
자리에 써줘야 합니다.
$ echo "pinentry-program /opt/homebrew/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
GPG Agent 재실행하기
설정을 반영해주기 위해 GPG Agent를 재실행합니다.
$ killall gpg-agent
GitHub에 GPG Key 등록하기
로컬에서만 Key를 생성하면 무의미하겠죠. 생성한 GPG Key를 GitHub에 등록해주어야 합니다.
Settings -> SSH and GPG keys
로 이동합니다. 그리고 New GPG key 버튼을 누릅니다. 그럼 아래와 같은 화면이 보일텐데요.
저 공란에 아까 생성한 GPG Key를 붙여넣기 해줍니다. GPG Key를 얻는 방법은 다음과 같습니다.
$ gpg --armor --export 3AA5C34371567BD2
이렇게 하면, ----BEGIN PGP PUBLIC KEY BLOCK-----
로 시작해서 ----END PGP PUBLIC KEY BLOCK-----
로 끝나는 기나긴 문자열이 출력될텐데요. 문자열의 시작(----BEGIN PGP PUBLIC KEY BLOCK---—
)과 끝(----END PGP PUBLIC KEY BLOCK---—
) 부분 모두 포함해서 복사합니다. 그리고 위 이미지의 공란에 붙여넣습니다. 이제 Add GPG key 버튼을 누르면 끝입니다.
최초 Commit 하기
이제 커밋을 하게 되면, 최초로 커밋할 때, pinentry-mac의 암호 입력창이 화면에 나타날텐데요. 여기에 우리가 GPG Key 생성하기 파트에서 입력했던 비밀번호를 입력해주면 됩니다. 가장 초기에만 입력해주면 후에는 추가 입력해줄 필요가 없습니다.
주의 사항
만약 위 내용을 잘 읽고 그대로 따라하지 않으셨다면, 에러가 발생할 수도 있습니다. 그럴 땐, 글을 처음부터 하나하나 따라가시면서 명령어를 수행해보시기를 추천드립니다. 그러고서도 해결되지 않으실 땐 댓글이나 이메일 부탁드립니다 🙂
참고
- https://stackoverflow.com/questions/39494631/gpg-failed-to-sign-the-data-fatal-failed-to-write-commit-object-git-2-10-0
- https://docs.github.com/en/github/authenticating-to-github/managing-commit-signature-verification/telling-git-about-your-signing-key
- https://gzupark.github.io/blog/How-to-do-that-all-commits-verify-from-GitHub-on-macOS/
마무리
여기까지 따라오시느라 고생이 많으셨습니다. 만약 이 튜토리얼이 도움이 되셨다면 글 좌측 하단의 하트❤를 눌러주시면 감사하겠습니다.
혹시라도 튜토리얼에 이상이 있거나, 이해가 가지 않으시는 부분, 또는 추가적으로 궁금하신 내용이 있다면 주저 마시고 댓글💬을 남겨주세요! 빠른 시간 안에 답변을 드리겠습니다 😊
'IT > IT WIKI' 카테고리의 다른 글
[Storage] Block Storage와 File Storage (0) | 2022.07.24 |
---|---|
[Wiki/Git] gitignore를 자동으로 만들어보자 (0) | 2021.03.11 |
[Wiki] 리눅스 기본 편집기를 변경하는 방법 nano -> vim (2) | 2020.08.15 |
[Wiki] Windows 10에서 Vagrant up 할때 오류 발생 시 해결 방법 (0) | 2018.03.03 |
[Wiki] fatal: Unable to create '.git/index.lock': File exists. (0) | 2018.02.26 |