깃에서 Could not create directory.. 에러가 발생할 때

깃을 사용하다 이미 ssh 키가 있는데도, 아래와 같은 메시지를 에러를 보게 되었다면  사용자 폴더 경로를 제대로 찾지 못한 것이 원인이다.

Could not create directory '/c/Users/\301\244\277\353\275\304/.ssh'.
The authenticity of host '[1.2.3.4]:29418 ([1.2.3.4]:29418)' can't be established.
RSA key fingerprint is SHA256:ktXLozkk/PDTt0zeR3QI0MnsjOggY6tQWw41zkkyVF3tcn.
Are you sure you want to continue connecting (yes/no)?

아마도 사용자 폴더가 한글인 것이 문제인 듯 하다. 검색해보았으나 근본적인 해결책은 찾지 못했다. 아쉬운대로, 깃이 ssh를 참조할 때 참고하는 HOME 변수를 선언해주자. 시스템 변수에 선언해도 되지만, 사용자 변수에 선언하는 것으로 충분하다.

HOME_variable

그 후에, HOME의 경로에 .ssh 폴더를 복사해 붙여주자. 다시 깃 명령어를 실행해보면 해결되었을 것이다.

그 밖에

혹시 근본적인 해결책을 알게 되신다면 댓글로 남겨주세요 🙂

HOME 변수가 잘 선언되었는지 확인하려면 echo 명령어를 사용하자.

>echo %HOME%
D:\Users

 

 

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)에서 도구를 다운받아 설치하자.

참고