git commit signing failed : secret key not available


84

Git을 사용하여 커밋하려고 할 때이 오류가 발생합니다.

gpg: skipped "name <name@mail.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

아래와 같이 새 키를 생성했지만 여전히 동일한 오류가 발생합니다.

gpg --list-keys
~/.gnupg/pubring.gpg
--------------------------------
pub   2048R/35F5FFB2 2016-04-23
uid                  name (New key) <name@mail.com>
sub   2048R/112A8C2D 2016-04-23

비밀 키는 위와 동일합니다.

git 태그 지정을 위해 GPG 키 생성 을 발견 하고 단계를 수행했지만 여전히 작동하지 않습니다.


3
Windows 사용자의 경우 Windows의 Git이 올바른 gpg를 사용하지 않기 때문에이 오류가 발생할 가능성이 훨씬 더 높습니다. PATH에서 올바른 바이너리를 찾지 못하면 git은 키가 어디에 있는지 알지 못하는 축소 된 MSYS 내에서 내부적으로 번들 된 gpg를 사용합니다. gpg.program 또는 G (NU) PGHOME 변수를 설정하면 아래 답변 중 몇 가지에 지정된대로 문제가 해결됩니다.
Abel Cheung

답변:


78

사용하기 전에 비밀 키를 구성해야합니다.

git config user.signingkey 35F5FFB2

또는 모든 저장소에 동일한 키를 사용하려면 전역 적으로 선언하십시오.

git config --global user.signingkey 35F5FFB2

출처 : Git 도구-작업 서명


레오나르도 감사합니다! 효과가있다!! 질문이 어리 석다면 죄송합니다. 어떻게 해결할지 몰랐습니다.
Emilio Menéndez

우수한! 사용자의 서명 키를 지정하면 하나의 키에 여러 이메일 주소가 있고 git 이메일과 키의 첫 번째 주소가 일치하지 않는 문제를 해결할 수 있습니다.
user2943160

1
공개 저장소에 비밀 키와 함께 .gitconfig를 저장하는 것이 안전합니까?
melihovv

1
@melihovv가 질문 한대로 기록을 위해 : — 비밀 키는 GPG 키링에 있어야합니다. 해당 키의 해시 ID 만 구성에 저장됩니다.
BRPocock

2
나는 이것을 함께해야만했다 git config --global gpg.program gpg2.
Splaktar

108

이것은 Windows 10에서 저에게 효과적이었습니다 (gpg.exe에 대한 절대 경로를 사용합니다).

git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"

이것은 수정 전에 얻은 오류였습니다.

gpg: skipped "3E81C*******": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
fatal: failed to write commit object

2
secret key not availableVS 코드와 설정 gpg.exe위치 에서이 오류가 발생 하여 해결되었습니다.
Dawid

2
이것은 나에게도 효과적이었습니다. 특히 github 자체 에서 구성 단계를 수행 한 후 .
Bas G

1
내 Windows 참가자 빌드가 설치 될 때마다이 옵션이 재설정됩니다. 감사합니다 :)
VRG

이것은 gpg의 절대 경로를 추가 한 후에도 저에게 효과적이었습니다. 감사합니다.
Adarsh ​​Srivastava

64

나를 위해 일한 것은

git config --global gpg.program "C:/Program Files (x86)/GNU/GnuPG/gpg2.exe"

gpg2.exe의 전체 경로를 찾으려면 :

where gpg2.exe

3
GnuPG는 설치된 버전에 따라이 작업을 수행 할 필요가 gpg.exe대신 gpg2.exe.
Mark Rotteveel

14

이 모든 답변을 완료하고 싶습니다. 왜냐하면 이것에 많은 문제가 있기 때문입니다.

이러한 예제는 --global플래그를 사용 하지만 로컬로 이러한 작업을 수행하려면 제거 할 수 있습니다.

git에서 비밀 키 구성

git config --global user.signingkey 35F5FFB2

git에서 witch gpg 프로그램 tu 사용 구성 (선택 사항)

일부 시스템 (exemple를위한 우분투) 수 gpggpg2같은 시간에. 사용할 것을 지정해야합니다.gpg2

git config --global gpg.program gpg2

GPG_TTY 내보내기 (선택 사항)

ssh 환경에서이 명령을 사용하면 다음 오류가 발생할 수 있습니다. Inappropriate ioctl for device또는 gpg: échec de la signature : Ioctl() inapproprié pour un périphérique. 다음을 통해 해결할 수 있습니다.

export GPG_TTY=$(tty)

GPG 노래 자동 활성화 (옵션)

git config --global commit.gpgsign true

더 이상 사용하지 않으려면 어떻게 비활성화합니까?
Madona Syombua

1
당신은 추가 할 수있는 --unset사람들에 플래그를 git config사용하지 않도록 설정하는 명령
alphayax

나는 실제로이 git config --global commit.gpgsign true를 사용했지만 false라고 말했습니다.
Madona Syombua

7

Windows 10 컴퓨터에서 동일한 상황이 발생했습니다.

$ git commit -m "Improve logging, imports and show time executed"
gpg: signing failed: Operation cancelled
gpg: signing failed: Operation cancelled
error: gpg failed to sign the data
fatal: failed to write commit object

명령 "C:\Program Files (x86)\GnuPG\bin\gpg.exe" --list-secret-keys --keyid-format LONGgpg --list-secret-keys --keyid-format LONG나에게 완전히 다른 결과를주는 곳!

$ where gpg
C:\Program Files\Git\usr\bin\gpg.exe
C:\Program Files (x86)\GnuPG\bin\gpg.exe

주된 이유는 이전 답변과 관련이 있지만 다른 의미입니다.

  • GPG의 git (구성된 경로) 버전을 사용하여 gpg 키를 만들었습니다.
  • Git은 커밋에 다운로드 된 gpg 버전을 사용하도록 구성되었습니다.
  • GPG 구현은 자체 인증서 데이터베이스 및 저장소를 사용하는 것으로 보입니다.

나는 이것이이 메시지를 우연히 발견하고 이전 답변으로 문제를 해결하지 못하는 사람에게 도움이되기를 바랍니다.


Visual Studio 커뮤니티가 서명에 기본적으로 사용하는 것처럼 보이기 때문에 cli 내보내기에서 kleopatra에 비밀 키를 추가해야했습니다.
Nithish

5

변수를 설정해야합니다 GNUPGHOME. 그것 없이는 GnuPG는 당신의 키를 찾을 수 없습니다.

# On unix add it to your path

# On windows it will usually be under: 
<drive>:\Users\<username>\AppData\Roaming\gnupg

Unix에서는 단순히 경로에 추가합니다.
Windows에서는 제어판을 열고 다음과 같이 설정해야합니다.

System Variable
  Name: GNUPGHOME
  Path: <drive>:\Users\<username>\AppData\Roaming\gnupg

1
저에게는 그렇지 않았습니다 GNUPGHOME. 로 GPGHOME그것은 나를 위해 작동
Sysix

1

.gitconfig의 git 이름과 이메일 저장소가 제공된 gpg 키의 것과 다르다는 점에서 동일한 문제가 발생했습니다 . 나는 그것들을 맞추기 위해 바꾸었고 작동하기 시작했습니다.


0

사용 "C:\Program Files\Git\usr\bin\gpg.exe"은 저에게 해결책이었습니다.
kleopatra를 제거해야했습니다. 그것으로는 작동하지 않았습니다.

그래서 요약하면;

  • kleopatra가 필요 없으며 대신 GIT 기본값을 사용하십시오.

  • git config --global user.signingkey Y0URK3Y
    git config --global commit.gpgsign true
    git config --global gpg.program "C:\Program Files\Git\usr\bin\gpg.exe"
    

-4

권한이있는 자신의 저장소를 복제해야 할 수도 있습니다. 다른 사람의 저장소를 복제 할 때이 문제가 발생했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.