티스토리 뷰

Git을 사용하다보면, Commit이나 Push를 하려고 할 때, 아래와 같은 메시지가 출력되기도 합니다.



저의 경우는, Git 프로그램을 재설치하거나 여러가지의 Git을 사용할 때, Path 꼬여버리거나 기존 데이터가 날아가면서 이러한 현상이 발생했던 것 같습니다.


이와 관련된 여러가지 이슈들이 있는데, 아무 솔루션이나 적용하면 나중에 귀찮아지기만 합니다.

특히, 자신에게 해당되지도 않은 Secret 키를 입력한다던지 그럴 수 있죠.


http://stackoverflow.com/questions/36810467/git-commit-signing-failed-secret-key-not-available


결국 위 에러 메시지는 gpg 파일이 제거되었거나, "Kei", <email> 라는 유저 정보의 Secret 정보가 제대로 등록되어 있지 않는 경우 발생합니다.

그렇다면, gpg 관련하여 관리를 해주면 되겠죠?


아래 URL에 공식 가이드가 있습니다.

https://git-scm.com/book/es/v2/Git-Tools-Signing-Your-Work


해결 방법은 두개로 나뉘기 때문에 나누어 설명하겠습니다.



1. gpg 리스트에 key가 등록되어 있을 때,


아래의 gpg --list-keys 라는 커맨드를 입력하면 아래와 같이 등록된 정보가 나옵니다.

이 경우는 제대로 Secret키가 등록되어 있지만, 제대로 적용이 되어 있지 않아 발생하는 경우입니다.

물론 자신이 원하는 Key나 UID가 아니라면 2번으로 넘어가주세요.

$ gpg --list-keys
/Users/example/.gnupg/pubring.gpg
---------------------------------
pub   2048R/0DA2826A 2017-01-02
uid                  Example (Git signing key) <example@example.com>
sub   2048R/95DF29A9 2014-01-02

여기서 pub에 있는 Key를 config 명령을 통해 설정해주면 됩니다.

git config --global user.signingkey 0DA2826A

만약 global하지 않고 user에 맞게 하시려면 --global 옵션을 제거하신 후 명령하시면 되겠죠.




2. gpg 리스트에 아무것도 없을 때,


저의 경우가 이 경우였습니다. 아주 깔끔하게 없더라구요.

$ gpg --list-keys
gpg: /c/Users/KEI/.gnupg/trustdb.gpg: trustdb created

list를 뽑아보면 아무것도 없으니 db를 자동으로 생성해 줍니다.


그럼 이제 key를 만들어야겠죠?

아래 명령어를 사용해서 key를 생성합니다. 



세부 설정에 대해 잘 모르겠다면, Default값 그대로 진행하면 되며, User와 이메일 정보만 제대로 입력해주면 됩니다.


마지막에, You need a Passphrase to protect your secret key. 라는 메시지와 함께 Passphrase를 입력하라고 하는데,

자신이 원하는 내용을 기입하거나 그냥 아무 입력없이(이 경우는 경고 메시지가 출력되지만, 나중에 수정할 수 있다면서 가이드를 제공합니다) 진행해도 됩니다.


생성이 완료되면, 위 --list 옵션의 gpg커맨드로 보았던 것과 같은 내용이 출력되는 것을 보실 수 있습니다.

그럼 나머지는? 같겠죠.


pub에 있는 Key를 config 명령을 통해 설정해주면 됩니다.

git config --global user.signingkey 0DA2826A


그리고 이제 커밋을 진행해 보시면, 정상적으로 처리되는 것을 확인하실 수 있습니다.





댓글
댓글쓰기 폼