해야할 것 요약
- 필요한 패키지 설치
- idx 설정, nix
- gnupg 설정
- gpg.conf,gpg-agent.conf
- 키 만들기
- 깃허브에 등록하기
- 깃 설정하기
무슨 일이 있었나
github에서 pull request하는 중, commit이 서명되지 않았다는 보안 경고가 떳습니다.
git 보안 설정 중에 서명된 commit이 아니면 merge가 안 되게 하는 것이 켜져 있었습니다.
그래서 서명해서 commit을 push하는 법을 검색했습니다.
뭘 했나
먼저 필요한 도구를 찾아서 설치하려고 했습니다.
패키지 설치
google idx를 사용하는 중이라 nix로 패키지를 불러오는 법을 찾아서 적용했습니다.
- shell.nix 파일을 작성해서 nix-shell을 실행할 때 필요한 도구를 설치하거나
- 이 경우는 터미널에서
nix-shell
을 실행해서 다음 작업을 진행해야 합니다.
- 이 경우는 터미널에서
- dev.nix 파일을 수정해서 필요한 도구를 작업공간 빌드할 때 추가해야 합니다.
gnupg 설정
필요한 도구를 설치했으니 보안 키를 생성, 관리하는 gnupg를 설정합니다.
설정을 위해 아래와 같이 파일들을 작성합니다.
gnupg 설정이 끝나면 gpg-agent를 종료합니다.
gpgconf --kill gpg-agent
키 만들기
gnupg 설정이 끝나면 사용할 키를 생성하기 위해 아래 명령을 입력합니다.
gpg --full-generate-key
만들 키 종류, 옵션을 설정하고 키에 담을 개인 정보인 이름, 이메일, 암호를 입력합니다.
생성되면 키에 대한 정보가 출력됩니다. 출처
깃허브에 등록하기
만든 GPG 키를 깃허브에 등록합니다.
- 깃허브
Setting > Access > SSH and GPG keys
에서New GPG key
를 클릭해서 등록화면이 나옵니다. - 깃허브에 등록하기 위해서 키를 출력합니다.
gpg --armor --export {key fingerprint}
- 출력된 키 복사할 때
----BEGIN ...
에서----END ...
줄까지 복사해서 붙여넣기 합니다. - 등록화면의 키 이름은 깃허브에서 구별하기 쉽게 하기 위해서 둔 것으로 키에는 영향이 없습니다. 참조
깃 설정하기
등록한 키를 사용하기 위해 깃을 설정합니다.
- 사용할 키를 설정하기 위해 키 ID를 입력합니다.
git config --global user.signingkey {key fingerprint}
- 커밋과 테그를 항상 서명하기 위해 다음과 같이 설정합니다.
git config --global commit.gpgsign true
git config --global tag.gpgsign true
- 혹은 커밋 할 때,
-S
옵션을 붙여서 서명할 수 있습니다.git commit -S -m {"message"}
여담
-
문제를 해결하려고 했던 일들 중에 어떤 일이 필요한 일인지 걸러내는 것이 골치 아프네요.
-
위에 있는 설정들을 해도 vscode gui에서 커밋하려고 하면
gpg: cannot open '/dev/tty': No such device or address
에러가 발생합니다. -
일단 bash에서 명령어를 입력해서 커밋하면 정상적으로 서명이 됩니다.
-
gpg-agent.conf
에서default-cache-ttl
,default-cache-ttl
옵션을 추가해서
세션 유지 시간을 늘려 놓은 뒤, -
처음에 bash에서 커밋하고 다음에는 vscode에서 커밋하는 것으로 대처하긴 했습니다.
-
이건 더 찾아봐야 할 것 같습니다.
git 관련된 설정들
gpg.program
- 깃에서 gpg키로 서명할 때 어떤 프로그램을 쓸지 정하는 옵션