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.)