Git 커밋에 서명을 원합니다.
상상도
 
 준비하는 것
 homebrew package
homebrew package
homebrew cask
열쇠 만들기
일반적인 비밀키의 암호화 방식은 ed25519 하지만, --expert 옵션이 없으면 사용할 수 없다.
% gpg --full-gen-key --expert
상세한 설명은 gpg 없음을 읽고 싶으면, 목적에 맞게 subkey를 만들 수 있다. 이번에는 서명과 인증용으로 두 가지 준비한다.
 Git에 서명
commit.gpgsign 옵션이 있으므로 활성화하십시오. user.signingkey 선택적으로 서명에 사용할 키 ID를 지정합니다. 키의 ID는 --list-keys (또는 --list-secret-keys) 옵션으로 출력할 수 있다 1.
% cat ~/.gitconfig
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: /Users/unlovingly/.gitconfig
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ [commit]
   2   │   gpgsign = true
   3   │ [user]
   4   │   signingkey = B933F6FE0FC19F4F
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
% gpg --list-keys --keyid-format long [email protected]
pub   ed25519/5E4449CA75763271 2020-06-05 [C]
      9FACEB719D03D05FF61045485E4449CA75763271
uid                 [ultimate] unlovingly <[email protected]>
sub   ed25519/B933F6FE0FC19F4F 2020-06-05 [S] [expires: 2021-06-05]
sub   ed25519/48AA4D1E17FF6BA9 2020-06-05 [A] [expires: 2021-06-05]
커밋 할 때 pinentry가 비밀 키의 패스 문구를 묻습니다. Keychain Access.app에서 기억할 수도 있습니다(이미지는 pinentry-curses).
 
나머지는 GitHub에 열쇠를 등록하면, 처음의 Verified 배지를 얻을 수 있다.
 GitHub에 키 등록
 GitHub 계정에 새 GPG 키 추가 - GitHub 고객센터
 SSH 연결에 사용
Authenticate 용으로 subkey 48AA4D1E17FF6BA9를 준비했습니다.
그런데 GnuPG에서 공개 키 인증을 한다면 ssh-agent(1) 대신 gpg-agent(1)를 사용한다.
 gpg-agent에는 OpenSSH 에이전트의 에뮬레이션 기능이 있습니다.
% cat ~/.gnupg/gpg-agent.conf
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: /Users/unlovingly/.gnupg/gpg-agent.conf
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ default-cache-ttl 86400
   2   │ max-cache-ttl 86400
   3   │ pinentry-program /usr/local/bin/pinentry-mac
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
gpg-agent는 인증 할 키의 키 그립을 가르칩니다.
% gpg --list-secret-keys --with-keygrip [email protected]
sec   ed25519 2020-06-05 [C]
      9FACEB719D03D05FF61045485E4449CA75763271
      Keygrip = 84500D69B6BAAF559687F31981319E74BF5B0386
uid           [ultimate] unlovingly <[email protected]>
ssb   ed25519 2020-06-05 [S] [expires: 2021-06-05]
      Keygrip = 6ADFDE069EC89D029B34AA3B2409EAC3B5854709
ssb   ed25519 2020-06-05 [A] [expires: 2021-06-05]
      Keygrip = F304C7E7D0A5715E550FDAAE2237B0A44CADF5CC
% echo F304C7E7D0A5715E550FDAAE2237B0A44CADF5CC >> ~/.gnupg/sshcontrol
또한 공개 키를 생성하여 원격 호스트에 설정해야 합니다. 생성에는 --export-ssh-key 옵션을 사용한다. 인수는 key ID 를 취한다. suffix !가 있으면 Authentication capability를 확인하지 않습니다.
% gpg --export-ssh-key 48AA4D1E17FF6BA9
gpg-agent를 시작합니다.
% gpgconf --launch gpg-agent
% cat ~/.ssh/config
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: /Users/unlovingly/.ssh/config
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ Host *
   2   │     ForwardAgent yes
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
% ssh example.com
 참고
% gpg --full-gen-key --expert
% cat ~/.gitconfig
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: /Users/unlovingly/.gitconfig
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ [commit]
   2   │   gpgsign = true
   3   │ [user]
   4   │   signingkey = B933F6FE0FC19F4F
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
% gpg --list-keys --keyid-format long [email protected]
pub   ed25519/5E4449CA75763271 2020-06-05 [C]
      9FACEB719D03D05FF61045485E4449CA75763271
uid                 [ultimate] unlovingly <[email protected]>
sub   ed25519/B933F6FE0FC19F4F 2020-06-05 [S] [expires: 2021-06-05]
sub   ed25519/48AA4D1E17FF6BA9 2020-06-05 [A] [expires: 2021-06-05]
% cat ~/.gnupg/gpg-agent.conf
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: /Users/unlovingly/.gnupg/gpg-agent.conf
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ default-cache-ttl 86400
   2   │ max-cache-ttl 86400
   3   │ pinentry-program /usr/local/bin/pinentry-mac
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
% gpg --list-secret-keys --with-keygrip [email protected]
sec   ed25519 2020-06-05 [C]
      9FACEB719D03D05FF61045485E4449CA75763271
      Keygrip = 84500D69B6BAAF559687F31981319E74BF5B0386
uid           [ultimate] unlovingly <[email protected]>
ssb   ed25519 2020-06-05 [S] [expires: 2021-06-05]
      Keygrip = 6ADFDE069EC89D029B34AA3B2409EAC3B5854709
ssb   ed25519 2020-06-05 [A] [expires: 2021-06-05]
      Keygrip = F304C7E7D0A5715E550FDAAE2237B0A44CADF5CC
% echo F304C7E7D0A5715E550FDAAE2237B0A44CADF5CC >> ~/.gnupg/sshcontrol
% gpg --export-ssh-key 48AA4D1E17FF6BA9
% gpgconf --launch gpg-agent
% cat ~/.ssh/config
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: /Users/unlovingly/.ssh/config
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ Host *
   2   │     ForwardAgent yes
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
% ssh example.com
이 기사를 쓸 때 열쇠를 만들었기 때문에 처음의 이미지와는 ID가 다르다 ↩
Reference
이 문제에 관하여(Git 커밋에 서명을 원합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/unlovingly/items/e250b1b2f9a070287929텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)