GPG 에이전트를 죽일 시간입니다 - Git SSH 코드 서명

3241 단어 githubgit
지난 주 GitHub가 마침내 출시되었습니다SSH code signing. Git은 거의 SSH 키로 서명을 도입했습니다year ago. 기술적으로 이전에는 SSH 코드 서명을 사용할 수 있었지만 GitHub는 무서운 "확인되지 않은 배지"를 표시했습니다.

코드 서명의 장점



대규모 오픈 소스 프로젝트에 기여하는 경우 대부분 코드 서명이 필요합니다. 왜요?

의도적으로 Git을 사용하면 누구나 가장할 수 있습니다. 예를 들어:

git -c user.name='Linus Torvalds' -c user.email='[email protected]' commit -m "hi"


이제 GitHub에서 무언가를 커밋하면 Linux Torvalds가 커밋한 것으로 표시됩니다. 이 항목에 대한 자세한 내용은 여기를 확인하세요. 이것이 왜 위험하지 않습니까? 코드 서명 때문에 코드에 서명하면 다른 사람들이 100% 본인임을 확신할 수 있습니다.

GPG를 통해 SSH를 사용하는 이유는 무엇입니까?



내가 생각하는 몇 가지 유효한 점이 있습니다.
  • Windows GPG 서명은 끔찍하며 오류 및 버그에 대한 수많은 StackOverflow 스레드를 찾을 수 있습니다. 내 GPG 에이전트는 적어도 일주일에 한 번 죽는 것을 좋아합니다. 그런 다음 에이전트를 종료하고 다시 시작하고 다시 커밋을 시도해야 합니다. 여전히 작동하지 않습니다. 다시 시작하고 마침내 작동합니다. 매우 성가시다.
  • 인증 및 서명에 동일한 SSH 키를 사용할 수 있으므로 두 개의 개별 키를 처리할 필요가 없습니다.

  • 설정



    이러한 명령은 Git Bash를 사용하는 경우 Windows, Linux 및 macOS에서 작동해야 합니다(Windows에서 ~에 문제가 있는 경우 상대 경로 사용).

    새 키를 생성해 보겠습니다(기존 SSH 키를 사용할 수 있음).

    ssh-keygen -t ed25519 -C "[email protected]"
    


    파일을 저장할 위치와 파일 이름을 선택할 수 있습니다. 기본값을 권장합니다. 그리고 암호를 묻는 메시지가 나타납니다. 기본 옵션을 수락한 경우 키는 ~/.ssh 에 있어야 합니다. 이제 새 키를 ssh-agent에 추가하십시오.

    ssh-add ~/.ssh/id_ed25519
    


    ssh-agent가 실행되고 있지 않을 수 있다는 오류가 표시되면 다음을 실행합니다.

    eval "$(ssh-agent -s)"
    


    이제 Git 통합을 구성하겠습니다.

    git config --global gpg.format ssh
    


    이제 ~/.ssh/id_ed25519.pub 공개 키 파일의 내용을 복사합니다.

    git config --global user.signingkey 'ssh-ed25519 AAAAC3... [email protected]'
    


    GitHub에 키 업로드



    이제 GitHub settings 으로 이동합니다. 새 SSH 키 추가를 클릭합니다. 서명 키를 선택했는지 확인하십시오. 공개 키 파일의 내용을 붙여넣습니다.

    이제 커밋을 리포지토리로 푸시하고 커밋을 클릭하면 멋진 인증 배지가 표시됩니다. 다음을 사용하여 지문을 확인할 수 있습니다.

    ssh-keygen -lf ~/.ssh/id_ed25519.pub
    


    이전 GPG 키 취소



    원하는 경우 이전 GPG를 쉽게 취소할 수 있습니다.

    현재 키를 나열합니다.

    gpg --list-keys
    

    ABCD1234 와 같은 첫 번째 줄에 공개 키 ID가 필요한 다음 키를 취소합니다.

    gpg --output revoke.asc --gen-revoke key 
    


    그런 다음 저장한 해지 인증서를 가져옵니다.

    gpg --import revoke.asc
    


    키링에서 키를 성공적으로 취소했습니다. 이제 GitHub 계정에서 동일한 GPG 키를 삭제하고 다시 업로드해야 합니다. 모든 작업을 제대로 수행했다면 이전 커밋을 살펴보고 멋진 주황색 "취소됨"배지를 볼 수 있습니다.

    좋은 웹페이지 즐겨찾기