gpg: signing failed: secret key not available

깃에서 커밋 시 -S 옵션을 통해 사인을 시도했으나, 다음과 같은 메시지가 나올 수 있다.

>git commit -S -m "your message"
gpg: skipped "your name <your.email@example.com>": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
fatal: failed to write commit object

결론만 이야기하면 원인은 두 가지다.

하나는 개인 키(secret key)가 없는 것이다. 아래의 명령어를 통해 개인 키가 있는지 여부를 확인할 수 있다.

>gpg --list-secret-keys
/home/yourname/.gnupg/secring.gpg
-----------------------------
sec#  4096R/488BA441 2013-03-13
uid                  your name <your.email@example.com>
ssb   4096R/69B0EA85 2013-03-13
ssb   4096R/C24C2CDA 2013-03-13

만약 아무런 데이터가 보이지 않는다면, 키가 없으니 만들어주면 된다.

다른 하나는 윈도우 사용자의 경우 GPG가 저장하는 키 저장소의 위치와 깃이 참고하는 키 저장소의 위치가 다르다. GPG는

[사용자 폴더]/AppData/Roaming/gnupg/

에 키를 보관하지만 깃은

[사용자 폴더]/AppData/.gnupg/

폴더를 참조한다.  해결책은 secring.gpg와 pubring.gpg, gpg.conf 파일을 깃이 참고하는 폴더로 복사해주면 된다.

그 밖에

gpg 명령어가 안된다면, GPG(GNU Privacy Guard)에서 도구를 다운받아 설치하자.

참고

One thought on “gpg: signing failed: secret key not available”

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.