서명된 Git 커밋에 Yubikey 사용
설정
Yubikey를 삽입하고 잠금을 해제한 상태에서 GPG 키의 ID를 찾으십시오.
$ gpg --list-secret-keys --keyid-format LONG
/home/paulmicheli/.gnupg/pubring.kbx
------------------------------------
sec r******/3**************E 2020-07-30 [SC] [expires: 2022-07-30]
6***************************E
uid [ultimate] Paul Micheli <paul@*********.com>
ssb r******/A***************0 2020-07-30 [E] [expires: 2022-07-30]
sec> r******/D**************4 2020-07-30 [SC]
3**************************************4
Card serial no. = 0006 10300768
uid [ultimate] Paul Micheli <paul@*********.com>
ssb r******/0**************8 2020-07-30 [E]
그런 다음 GitHub에 알릴 수 있도록 공개 키를 가져옵니다. 여기서 인수는 위 명령의 긴 ID입니다.
$ gpg --armor --export A**********0
-----BEGIN PGP PUBLIC KEY BLOCK-----
m[NOPE NOT HAVING THE MIDDLE]
=ZDdO
-----END PGP PUBLIC KEY BLOCK-----
시작 및 끝 블록을 포함하여 위의 공개 키를 복사합니다and then add it as a new key on GitHub.
그런 다음 Git에 GPG를 사용하여 커밋, 특히 이 키에 서명하도록 지시해야 합니다. 이전에 실행한 --list-secret-keys 명령의 출력에서 짧은 ID를 사용합니다. 내 예에서는 rsa3072/A97FDF705EF51C50을 따릅니다.
$ git config --global commit.gpgsign true
$ git config --global user.signingkey A**********0
거의 거기! 이제 GPG 에이전트를 다시 시작하겠습니다.
$ gpg-connect-agent reloadagent /bye
테스트
아무 저장소에서나 커밋하고 오류 메시지가 표시되지 않기를 바랍니다.
git log --show-signature를 실행하여 커밋이 서명되었는지 확인합니다.
$ git log --show-signature
commit 925fb1cae8c33c0f7f4fd6b270fc9f4cf6a8ef80 (HEAD -> master, origin/master, origin/HEAD)
gpg: Signature made Thu 30 Jul 2020 13:59:27 BST
gpg: using RSA key 6**********************E
gpg: Good signature from "Paul Micheli <paul@*********.com>" [ultimate]
Author: Paul Micheli <paul@*********.com>
Date: Thu Jul 30 13:59:27 2020 +0100
signed commit test
푸시
지금까지 모든 것이 작동했다고 가정하면 이제 GitHub에서 멋진 "인증됨"배지의 찬란한 영광을 git push하고 만끽할 수 있습니다.
왜 귀찮아?
이 모든 것의 이점이 무엇인지 물을 수도 있습니다. 결국 SSH 키를 사용하여 이미 GitHub에 인증하고 있는 것입니다. 맞죠?
SSH 키는 GitHub와 대화할 수 있고 해당 리포지토리에 액세스할 수 있음을 증명합니다. 당신이 푸시하는 커밋이 실제로 플래그가 지정된 작성자에 의해 작성되었다는 것을 증명하지는 않습니다.
거짓 신원으로 커밋하는 것은 간단합니다.
git commit -m "implement sensible error handling" --author="Robby Bobby <[email protected]>"
그런 다음 이를 푸시하여 SSH 키(또는 HTTP 기본 자격 증명)로 인증할 수 있습니다. 이는 물론 완전히 유효합니다.
그런 다음 동료로 가장하여 급여 인상에 도움이 되는 멋진 코드를 밀어 넣었을 것입니다. 또는, 아마도 당신은 사악한 일을 했을 것입니다. 하지만 절대 그런 짓은 하지 않겠죠?
Reference
이 문제에 관하여(서명된 Git 커밋에 Yubikey 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/paulmicheli/using-your-yubikey-for-signed-git-commits-4l73텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)