Keybase에 등록한 키를 사용하여 macOS에서 git 서명 된 커밋을 수행합니다 (실천 기록)

소개



아무래도✋(´・ᴗ・` )
제목대로 서명된 commit을 Keybase와 함께 하자는 이야기입니다.

Keybase 키로 GitHub 커밋에 Verified 배지를 붙이기 - Qiita
기본적으로 위의 기사의 실천 기록입니다.
쓰여진 순서를 실시하면서, 나 같은 초학자용으로 설정의 근거등을 나름대로 조사했으므로 그것을 정리해 보았습니다.

절차



Keybase 설치



Keybase를 사용하여 키를 관리하고 싶으므로 설치하지 않으면 설치해 둡니다.
공식 사이트에서 설치 프로그램을 다운로드하여 설치하십시오.
The App - Install Macos | Keybase Docs

GPG_TTY 설정



나중에 사용할 GnuPG라는 소프트웨어에 사용되는 쉘의 위치를 ​​가르치기 위해 다음 절차에 따라 환경 변수 GPG_TTY를 설정하십시오.
이것을 설정하지 않으면 GnuPG가 어떤 쉘에서 입력을 읽으면 좋을지 모르지만 Inappropriate ioctl for device 오류가 발생합니다.

① .zshrc 등, 이용하고 있는 쉘의 설정 파일을 엽니다.
② 다음을 추가합니다.
GPG_TTY=$(tty)
export GPG_TTY

③ 설정 파일을 다시 읽습니다.
$ source .zshrc

필요한 소프트웨어 설치



① 아래 명령을 실행하여 GnuPG와 pinentry-mac을 설치합니다.
GnuPG는 암호화 소프트웨어, pinentry-mac은 개인 키의 암호 문구를 입력하는 데 사용하는 소프트웨어입니다.
$ brew install gnupg pinentry-mac

② GnuPG의 설정 파일을 저장하는 폴더를 작성합니다.
$ mkdir ~/.gnupg

③ 아래 명령을 실행하여 ~/.gnupg 아래의 설정 파일에 설정 값을 쓰고 GnuPG에 pinentry-mac의 위치를 ​​알려줍니다.
$ echo "pinentry-program `which pinentry-mac`" > ~/.gnupg/gpg-agent.conf

④ GPG Agent를 재시작합니다.
$ gpgconf --kill gpg-agent

Keybase에서 키 가져오기



① Keybase에서 공개 키를 내보내고 그것을 GnuPG로 가져옵니다.
$ keybase pgp export | gpg --import

② Keybase에서 개인 키를 내보내고 그것을 GnuPG로 가져옵니다.
비밀키의 패스프레이즈를 묻는다면 적절하게 설정합니다.
$ keybase pgp export --secret | gpg --allow-secret-key --import



이런 느낌의 표시가 나오면 OK입니다.
gpg: 鍵****************:"Ray Nanamiya <****@***.***>"変更なし

gpg: 鍵4F7AF2B0AF315E05: 秘密鍵をインポートしました
gpg:           処理数の合計: 1
gpg:               変更なし: 1
gpg:       秘密鍵の読み込み: 1
gpg:     秘密鍵のインポート: 1

github.com에 공개 키 정보 등록



아직 github.com에 공개 키 정보를 등록하지 않았다면 등록합니다.

① 공개 키를 복사하려면 Keybase의 자신의 프로필 페이지로 이동하여 여기를 클릭합니다.


② 여기에 표시된 문자열을 복사합니다.


③ Github의 자신의 프로필 페이지에 액세스하고 화면 오른쪽 상단의 Settings를 클릭합니다.


④ "New GPG Key"를 클릭하여 복사한 GPG 키를 등록합니다.


git 설정



마지막으로 필요한 설정을 git에 넣습니다.

키 정보 등록



① 아래 명령을 실행하여 키 정보를 확인합니다.
이 때, 메일 주소가 git에 commit할 때의 메일 주소와 일치하지 않으면 안됩니다.
$ gpg --list-secret-keys
gpg: *警告*: homedir '/Users/***/.gnupg'の安全でない許可
/Users/***/.gnupg/pubring.kbx
-----------------------------
sec   rsa4096 2019-09-29 [SC] [有効期限: 2035-09-25]
      E474************************************
uid           [  不明  ] Ray Nanamiya <***@***.***>
ssb   rsa4096 2019-09-29 [E] [有効期限: 2035-09-25]

② E474로 시작하는 문자열을 git에 등록합니다.
$ git config --global user.signingkey E474************************************

GnuPG 경로 설정



① 아래 명령을 실행하여 git에게 GnuPG의 위치를 ​​알려줍니다.
$ git config --global gpg.program `which gpg`

마지막으로



이상의 순서를 밟으면 GPG 키로 서명한 커밋을 할 수 있게 됩니다.
서명이 붙은 커밋을 할 때는
$ git commit -S -m "***"
-S 옵션을 사용합니다.

참고 자료


  • gpg-agent forwarding: inappropriate ioctl for device - Stack Overflow
  • Keybase 키로 GitHub 커밋에 Verified 배지를 붙이기 - Qiita
  • gpg: signing failed: Inappropriate ioctl for device · Issue #2798 · keybase/keybase-issues
  • 좋은 웹페이지 즐겨찾기