programing

git 커밋 서명 실패: 비밀 키를 사용할 수 없습니다.

jooyons 2023. 6. 29. 20:04
반응형

git 커밋 서명 실패: 비밀 키를 사용할 수 없습니다.

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 tagging을 위한 GPG생성을 발견했고 단계를 따랐지만 여전히 작동하지 않습니다, 알 수 있습니까?

이것은 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

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

git config user.signingkey 35F5FFB2

또는 모든 리포지토리에 대해 동일한 키를 사용하려는 경우 전체적으로 선언합니다.

git config --global user.signingkey 35F5FFB2

출처: Git Tools - 작업 서명

제게 효과가 있었던 것은 추가하는 것이었습니다.

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

만약 당신이 gpg2의 전체 경로를 찾고 싶다면요.exe:

where gpg2.exe

나는 최근에 같은 것을 발견했습니다.secret key not available오류 및 GPG 에이전트를 찾을 수 없는 것과 같은 몇 가지 더 있습니다.

저의 경우, GitHub에서 검증된 커밋 서명 및 표시를 받고 싶었습니다.

다음은 Windows 10 x 64에서 작동하기 위한 전체 단계입니다.

GPG 설치

을 GPG 2.3.과 함께 했습니다.winget 예:

C:\> winget install GnuPG.GnuPG

다음을 사용하여 확인:

C:\> gpg --version

GPG 키 생성

C:\> gpg --full-generate-key
  • GitHub 계정에서 사용된 것과 동일하게 실명과 이메일을 추가합니다.

  • 키는 4096비트 이상이어야 합니다.

키를 ASCII Armor 형식으로 내보냅니다.

먼저 키를 나열합니다.

C:\> gpg --list-secret-keys --keyid-format=long

secsa4096/[숏키] 2021-06-14 [SC]

그런 다음 내보내기:

C:\> gpg --armor --export [short-key]

BEGIN/END 텍스트를 포함하여 키를 복사합니다.

-----BEGIN PGP PUBLIC KEY BLOCK-----
[huge-ascii-key]
-----END PGP PUBLIC KEY BLOCK-----

GPG Armor ASCII 키를 GitHub 계정에 추가합니다.

에 가다Profile>Settings>SSH and GPG keys> New GPG key

또는 다음 시각적 지침을 따르십시오.

기본적으로 모든 커밋에 서명하도록 Git 구성

C:\> git config --global user.signingkey [short-key]
C:\> git config --global commit.gpgsign true
C:\> git config --global gpg.program "C:/Program Files (x86)/gnupg/bin/gpg"

GPG 에이전트에 대한 GPG 환경 변수 설정

GPG 에이전트 확인:

gpg-agent --version

환경 변수를 설정합니다.

GNUPGHOME=%USERPROFILE%\AppData\Roaming\gnupg

다 했어요.

으로 발생하는 그과.gitconfig다음과 같은 사용자 섹션이 있습니다.

[user]
    name = Your Name
    email = your@email.com
    signingkey = [short-key]
[commit]
    gpgsign = true
[gpg]
    program = C:/Program Files (x86)/gnupg/bin/gpg

저는 이 모든 답변을 작성하고 싶습니다. 왜냐하면 저는 이것에 대해 많은 문제가 있기 때문입니다.

다음 예제는 다음을 사용합니다.--global플래그, 그러나 로컬에서 이러한 항목을 제거하려면 플래그를 제거할 수 있습니다.

비밀 키 비트 구성

git config --global user.signingkey 35F5FFB2

git를 사용하여 witch gpg program tu를 구성합니다(선택 사항).

일부 시스템(예: Ubuntu)은 다음을 포함할 수 있습니다.gpg그리고.gpg2동에시항지합야니다해정을목을 사용할 .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

사용."C:\Program Files\Git\usr\bin\gpg.exe"그것이 저를 위한 해결책이었습니다.
클리오파트라를 제거해야 했습니다.그것으로, 그것은 작동하지 않았습니다.

그래서 요약하자면,

  • Kleopatra가 필요하지 않습니다. 대신 GIT default를 사용하십시오.

  • 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"
    

저는 윈도우 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 LONG그리고.gpg --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 구현은 자체 인증서 데이터베이스와 스토리지를 사용하는 것 같습니다.

저는 이것이 이 메시지와 이전의 답변을 더듬는 사람들이 문제를 해결하지 못하도록 도울 수 있기를 바랍니다.

변수를 설정해야 합니다.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

.gitconfiggit 이름과 이메일 스토어가 제공된 gpg 키와 다르다는 것도 같은 문제였습니다.일치시키기 위해 그것들을 바꿨더니 작동하기 시작했어요.

Windows 11에서 다음을 설정합니다.gpg.program다음과 같이 실행 파일이 해당 위치에 있음에도 불구하고 저는 작동하지 않았습니다.

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

다음과 같이 설정해야 했습니다.

git config --global gpg.program gpg

VS Code에서 이 오류가 발생했습니다.나는 아래의 명령을 실행했습니다.Bash

git config --global commit.gpgsign false

그럼, 치세요.Ctrl+,설정을 엽니다.작업영역 설정에서 "커밋 서명 사용"을 선택 취소합니다(사용 가능).

enter image description here

이제 VS 코드 터미널을 열고 아래 명령을 실행합니다.

enter image description here

필요한 경우 VS Code를 닫았다가 다시 엽니다.이제 될 거예요.

다음 단계를 통해 문제를 해결할 수 있었습니다.

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

git config --global --unset gpg.format

gpg --list-secret-keys --keyid-format=long
// this will list the keys and copy the Key-ID

enter image description here

첫 번째 줄에 강조 표시된 키를 복사하고 다음 쿼리에서 다음과 같이 사용합니다.Key-ID

git config --global user.signingkey <Key-ID>

git config --global commit.gpgsign true

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

언급URL : https://stackoverflow.com/questions/36810467/git-commit-signing-failed-secret-key-not-available

반응형