FlyingSquirrel
9 min readJun 8, 2020

GitHub GPG 설정하기

Bitbucket 쓰는 회사 컴퓨터에서 특정 directory만 GitHub 계정으로 서명해서 commit하는 방법

GPG key를 설정해두면 커밋에 사인을 할 수 있다!
GPG key를 설정해두면 커밋에 사인을 할 수 있다!

Verified가 갖고 싶었을 뿐…

개인적으로 사용하는 노트북도 맥북이긴 하지만, 회사에서 받은 맥북이 15인치여서 화면이 넓어서 개인 프로젝트할 때에도 회사 맥북을 자주 사용하고 있습니다. 최근에 진행하고 있는 사이트 프로젝트에서 git config --localuser.nameuser.email을 설정해서 git push 까지 잘 했는데, 우연히 회사컴퓨터에서 작업한 것은 Verified라는 버튼이 없는 것을 발견했습니다.

단순히 저 버튼이 갖고 싶어서 찾아보면서 알게된 GPG key 서명설정 방법을 적어봅니다!

Verified 버튼을 갖기 위해서는 GPG key 설정을 해서 커밋할 때 signautre를 남겨줘야합니다.

저게 뭐라구.. Verified 버튼이 갖고 싶었어요.

왜 GPG key로 서명을 하나요?

GPG key를 찾아보면 리눅스 어쩌구, 암호화 어쩌구, 공개키 어쩌구 하면서 어려운 말들이 많았습니다.

Using GPG or S/MIME, you can sign tags and commits locally. These tags or commits are marked as verified on GitHub so other people can trust that the changes come from a trusted source.

GPG 또는 S/MIME를 사용하면 로컬환경에서 tag와 commit에 사인을 할 수 있습니다. 사인된 tag와 commit은 Github에서 verified되었다고 표시가 되기 때문에 다른 사람들이 변경사항이 신뢰할 수 있는 소스에서 왔다는 것을 신뢰할 수 있게 됩니다.

github 도움말 페이지 설명이 그 중에서 가장 깔끔했는데(역시 공식문서인가), 내용인즉, GPG 또는 S/MIME를 사용하면 로컬환경에서 tag와 commit에 사인을 할 수 있다고 합니다. 사인된 tag와 commit은 Github에서 verified되었다고 표시가 되기 때문에 다른 사람들이 변경사항이 신뢰할 수 있는 소스에서 왔다는 것을 신뢰할 수 있게된다라는 내용입니다. 부연설명중에는 Repository admin권한자가 서명된 커밋만 받도록 설정할 수 있다는 말도 써있더라고요 😀

특정 directory에서만 사용할 github 계정 설정하기

제 노트북의 git config --global --list설정에는 user에 대한 정보는 당연히 회사에서 쓰는 bitbucket 계정입니다. 궁금하신 분들은 터미널에서 이렇게 쳐보시면 global로 어떤 계정으로 설정되었는지 볼 수 있습니다.

$ git config --global --list..(여러가지 설정이 보일거에요)..
user.email=company@company.com
user.name=Jihye Park

이제 사이드프로젝트를 진행 중인 directory로 이동해서 확인해보겠습니다.

git config — local — list
git config — local — list 화면
$ git config --global user.name "flyingSquirrel-dev"
$ git config --global user.email "myemail@email.com"
$ git config --local --list
user.name=flyingSquirrel-dev
user.email=myemail@email.com

이렇게 설정되어야 이 directory에서는 회사계정이 아닌 github 개인계정인 flyingSquirrel-dev계정으로 git commit, git push 를 진행하게 됩니다.

요 상태에서 git commit, git push를 해도 commit을 남기고, push를 할 수는 있지만 verified버튼은 얻을 수 없습니다 😭 GPG key를 받아서 설정해줘야합니다.

GPG Key 발급 및 추가하기(이미 Key 발급받은 분들은 12번부터!)

  1. GPG key라는 것 발급받기 위해서는 GPG command line tool을 설치해야합니다. 설치는 GnuPG 홈페이지에서 최신 버전을 다운로드 받거나 OS에 따라서 apt-get, yum, curl, brew로도 받을 수 있습니다.
  2. GPG Key 발급은 github 홈페이지 차근차근 따라하는 것이 좋은 것 같습니다. 저는 GPG 버전이 2.2.20이어서 아래 명령어로 GPG key를 생성했습니다. 2.1.17 버전 이하일 경우에는 gpg — default-new-key-algo rsa4096 — gen-key명령어로 해야한다고 합니다.
$ gpg --full-generate-key

3. 그러면 아래와 같은 화면이 뜨는데 그냥 엔터를 쳐줍니다. 그러면 Default인 RSA and DSA로 선택이 됩니다.

gpg — full-generate-key gpg Please select what kind of key you want: (1) RSA and RSA (default)

4. 원하는 key size를 입력하는 것인데, github 도움말 페이지 가라사대 꼭 4096이라고 입력하라고 합니다. 4096입력하고 엔터!

RSA keys may be between 1024 and 4096 bits long. What keysize do you want?
4096

5. Key 유효기간을 선택하라는 화면이 뜹니다. 딱히 선택안하고 엔터를 치면 유효기간 없이 계속 그 key를 사용할 수 있습니다. 저는 그냥 엔터를 쳤습니다.

Please specify how long the key should be valid.

6. 지금까지 선택한 정보가 정확한지 다시 한 번 묻습니다. 맞다면 y, 아니면 N을 입력합니다.

7. Real name이라고 적혀있지만, github 계정 id와 email 주소와 동일하게 입력합니다.comment 부분은 따로 안적어줘도 됩니다.

8. 이름/Comment/이메일 중에 변경할 게 있는지, 다 된 건지(Okay), 설정을 종료할건지(Quit)을 물어보는 화면이 뜹니다. O를 입력해서 계속 진행해줍니다.

9. 암호를 설정하라는 화면이 뜹니다. 입력하고 Ok버튼을 눌러줍니다. 그러면 GPG Key 생성 완료입니다!

10. gpg: key 어쩌구 marked as ultimately trusted 부분에서 어쩌구GPG key입니다. GPG Key를 복사해둡니다.

만약 위 화면을 놓쳤다면, gpg --list-secret-keys --keyid-format LONG 명령어로 확인할 수 있습니다. 아래와 같은 화면에서 GPG Key3AA5C34371567BD2입니다.

$ 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

11. 터미널에서 아래와 같이 치면 엄청 긴 무언가가 출력될거에요.-----BEGIN PGP PUBLIC KEY BLOCK----------END PGP PUBLIC KEY BLOCK----- 도 포함한 전체 문자열을 복사해줍니다.

// 3AA5C34371567BD2 대신 본인 GPG Key를 넣으면 됩니다.
$ gpg --armor --export 3AA5C34371567BD2
-----BEGIN PGP PUBLIC KEY BLOCK-----
abcdefg127368abcdefg127368abcdefg127368
abcdefg127368abcdefg127368abcdefg127368
...(엄청난 문자열들 생략)...
-----END PGP PUBLIC KEY BLOCK-----

12. Github 홈페이지 오른쪽 위 프로필 사진을 클릭해서 Settings로 들어간 후 SSH and GPG keys라는 메뉴를 클릭합니다.

13. 초록색 버튼인 New GPG Key 버튼을 클릭합니다.

14. 11번에서 복사한 문자열을 붙여넣어주고 Add GPG key 버튼을 눌러줍니다.

15. GPG Key를 추가된 것을 확인할 수 있습니다. 🎉

16. 사이드프로젝트 진행하고 있는 directory로 이동하여 아래 명령어로 signingkey를 설정해줍니다.

// 191AB88C646D7B99 대신에 본인 Key ID를 넣어주면 됩니다.
$ git config --local user.signingkey 192Z33P646D7B99

17. 이제 커밋을하게 되면 9번에서 설정한 암호를 묻는 창이 뜹니다. 암호를 입력하고 OK를 눌러줍니다.

혹시 sign이 안된다면, stackoverflow 글을 읽어봅니다.

18. Verified 버튼을 얻게 되었습니다 🎉🎉🎉🎉

FlyingSquirrel
FlyingSquirrel

Written by FlyingSquirrel

감성이 말랑말랑한 개발자입니다.

No responses yet