programing

gpg가 데이터 서명에 실패함: 커밋 개체를 쓰지 못했습니다 [Git 2.10.0]

javajsp 2023. 4. 24. 22:25

gpg가 데이터 서명에 실패함: 커밋 개체를 쓰지 못했습니다 [Git 2.10.0]

Git 2.10 릴리즈 노트의 예쁜 속성에 대해 몇 가지 기사를 팔로우했습니다.Git을 2.10.0으로 업그레이드하고 글로벌하게 변경하였습니다..gitconfig결과는 다음과 같습니다.

[filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true
[user]
    name = xyz
    email = abc.def@gmail.com
    signingkey = AAAAAAA
[core]
    excludesfile = /Users/xyz/.gitignore_global
    editor = 'subl' --wait
[difftool "sourcetree"]
    cmd = opendiff \"$LOCAL\" \"$REMOTE\"
    path = 
[mergetool "sourcetree"]
    cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
    trustExitCode = true
[alias]
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
[color "diff"]
    old = red strike
    new = green italic

하지만 이제 저는 제 커밋에 서명하려고 합니다.

git commit -a -S -m "message"

다음의 에러가 표시됩니다.

암호 구문이 있어야 다음 암호 키의 잠금을 해제할 수 있습니다.

사용자: "XYZ(디지털 서명)"

2048비트 RSA 키, ID AAAAAA, 2016-07-01 생성

오류: gpg가 치명적인 데이터에 서명하지 못했습니다. 커밋 개체를 쓰지 못했습니다.

참고 - 다음을 사용하여 변경을 커밋할 수 있습니다.git commit -a -m "message"

같은 것을 극복할 수 있는 방법이 있을까요? 에서 한 모든 gpggit의 합니다.


업데이트 1

또한 GPG 키로 Git에서 커밋을 "자동 서명"할 수 있는 방법이 있습니까?키를 이미 설정했습니다.

git config --global user.signingkey ED5CDE14(with my key) 
git config --global commit.gpgsign true

어쨌든 똑같은 오류가 발생하는 게 분명해

OSX에서 이 문제가 발생했습니다.

원답:

가 (brew) gpg 위치로 된 것 .gpg로로 합니다.gpg1할 수

git config --global gpg.program gpg1

이 없는 경우:brew install gpg1.

갱신된 답변:

gpg1이 권장되지 않는 것 같습니다/"사용률이 낮아졌다"고 생각되므로 실제로 gpg2로 업데이트해야 합니다.불행히도 이 작업은 몇 단계/시간이 걸립니다.

brew upgrade gnupg  # This has a make step which takes a while
brew link --overwrite gnupg
brew install pinentry-mac

이전 홈브루:

echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent

M1 Mac과 같은 최신 시스템의 경우:

echo "pinentry-program /opt/homebrew/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf 
killall gpg-agent

첫 번째 부분은 gpg2를 설치하고, 두 번째 부분은 gpg2를 사용하기 위해 필요한 해킹입니다.트러블 슈팅에 대해서는, 다음의 답을 참조해 주세요(단, brew가 아닌 linux에 관한 것이기도 합니다).좋은 테스트를 제안합니다.

echo "test" | gpg --clearsign  # on linux it's gpg2 but brew stays as gpg

이 테스트에 성공하면(PGP 시그니처를 포함한 에러/출력 없음), 최신 gpg 버전으로 정상적으로 갱신된 것입니다.

다시 할 수 ! git signing! it시을을 을시!! !!!!!!
주의할 점은 다음과 같습니다.

git config --global gpg.program gpg  # perhaps you had this already? On linux maybe gpg2
git config --global commit.gpgsign true  # if you want to sign every commit

주의: 서명된 커밋을 실행한 후 다음과 같이 서명되었는지 확인할 수 있습니다.

git log --show-signature -1

마지막 커밋에 대한 gpg 정보가 포함됩니다.

및2.하는 경우 gnupg2' gpg-agent 2.x'를 하십시오.GPG_TTY.

export GPG_TTY=$(tty)

일반적인 문제에 대해서는 GPG의 문서를 참조하십시오.

GIT_TRACE=1 있습니다.git의 실제 동작은 다음과 같습니다.

$ GIT_TRACE=1 git commit -m "example commit message"
20:52:58.902766 git.c:328               trace: built-in: git 'commit' '-vvv' '-m' 'example commit message'
20:52:58.918467 run-command.c:626       trace: run_command: 'gpg' '--status-fd=2' '-bsau' '23810377252EF4C2'
error: gpg failed to sign the data
fatal: failed to write commit object

이제 실패한 명령을 수동으로 실행합니다.

$ echo "dummy" | gpg -bsau 23810377252EF4C2
gpg: skipped "23810377252EF4C2": Unusable secret key
gpg: signing failed: Unusable secret key

「 」가 이 지났습니다.git이이아아아아아

다음 URL에 따라 서명된 커밋 https://help.github.com/en/articles/telling-git-about-your-signing-key을 설정합니다.

gpg 취득이 아직 데이터에 서명하지 못한 경우: 커밋 개체를 쓰지 못했습니다.

이것은 git의 문제가 아닙니다.이것은 GPG에 관한 것입니다.아래의 순서에 따릅니다.

  1. gpg --version
  2. echo "test" | gpg --clearsign

표시되는 경우:

gpg: signing failed: Inappropriate ioctl for device
gpg: [stdin]: clear-sign failed: Inappropriate ioctl for device

  1. 으로 ' '를 사용합니다.export GPG_TTY=$(tty)

  2. 한 번 해보다echo "test" | gpg --clearsignPGP를 사용하다

  3. git config -l | grep gpg

gpg.program=gpg
commit.gpgsign=true
  1. git commit -S -m "commitMsz"

저는 이 간단하고 쉬운 레시피를 통해 그것을 해왔습니다.

macOS에서의 자동 서명 커밋(글로벌하게 다른 IDE 사용):

구입하다signingkey이런 으로.

brew install gnupg gnupg2 pinentry-mac
git config --global user.signingkey <YOUR_SIGNING_KEY>
git config --global commit.gpgsign true
git config --global gpg.program gpg

에 넣으세요.gpg.conf(파일)을 사용하여 합니다)nano ~/.gnupg/gpg.conf★★★★★★★★★★★★★★★★★★:

no-tty

에 넣으세요.gpg-agent.conf(파일)을 사용하여 합니다)nano ~/.gnupg/gpg-agent.conf★★★★★★★★★★★★★★★★★★:

pinentry-program /usr/local/bin/pinentry-mac

업데이트:

처럼 '어느 정도'를 실행해야 할 도 있습니다.killall gpg-agent 후 합니다.gpg.conf에 의해 GPG 에이전트가 되는 것은 .GPG(Gnu Privacy Guard)는 GNU Privacy Guard(Gnu 프라이버시 가드)를 사용하고 있습니다.

과정에 이 될 수 .gpg-agent이치노gpg-agent패스워드를 요구합니다.

MacOS 머신에서 이 문제가 발생하고 있는 유저에게, 다음의 조작을 실시해 주세요.

  1. brew uninstall gpg
  2. brew install gpg2
  3. brew install pinentry-mac) (필요한 경우)
  4. gpg --full-generate-key알고리즘을 사용하여 키를 만듭니다.
  5. 명령을 실행하여 .gpg --list-keys
  6. 를 여기에 맞추세요.git config --global user.signingkey <Key from your list>
  7. git config --global gpg.program /usr/local/bin/gpg
  8. git config --global commit.gpgsign true
  9. 「GitHub」를 참조해 주세요.gpg --armor --export <key>GPG 키에서 이 키를 GitHub에 추가합니다.https://github.com/settings/keys (START 및 END 행 포함)

문제가 해결되지 않는 경우는, 다음의 순서에 따릅니다.

test -r ~/.bash_profile && echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile

echo 'export GPG_TTY=$(tty)' >> ~/.profile

문제가 해결되지 않는 경우는, 다음의 순서에 따릅니다.

https://gpgtools.org 를 인스톨 해, 메뉴바의 [Sign](사인)을 눌러 사용한 키에 서명합니다.키-> 서명

문제가 해결되지 않는 경우는, 다음의 순서에 따릅니다.

: : 로 go go.gitconfig과 같은 파일이 ./Users/gent/.gitconfig또한 .gitconfig 파일을 수정합니다(Email과 Name이 키를 생성할 때 작성한 파일과 동일한지 확인하십시오).

[user]
    email = gent@youremail.com
    name = Gent
    signingkey = <YOURKEY>
[gpg]
    program = /usr/local/bin/gpg
[commit]
    gpsign = true
    gpgsign = true
[filter "lfs"]
    process = git-lfs filter-process
    required = true
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
[credential]
    helper = osxkeychain

내 의견:

키를 할 때 gpg-agent라고 하는 것을 합니다.passphrasepassphrase 시점에서 기한이 되어 「기한이 만료됩니다.」gpg다시 서명할 수 있도록 키를 잠금 해제하려면 키를 다시 입력해야 합니다.

인터페이스 하는 다른 을 사용하는 gpg,gpg패스프레이즈를 입력하라는 프롬프트가 표시되지 않습니다(예:gpg-agent 경우 데몬화된 입력 할 수 .stdin를 참조해 주세요.

방법 중 는 '일부러'입니다.gpg --sign a_file.txt키시하면 모든이 정상입니다(비밀번호는 "비밀번호').gpg-agent자동으로 서명해야 합니다.

패스 프레이즈의 타임 아웃을 길게 설정하는 방법에 대해서는, 회답을 참조해 주세요.

를 완전히 .ssh-keygen -p

" " " 를 실행합니다.man gpg-agent위의 작업을 자동으로 수행하고 행을 추가하는 방법에 대한 몇 가지 내용을 읽어 보십시오.

GPG_TTY=$(tty)
export GPG_TTY

bashrc에서 bash를 사용하고 있다면(이것은 정답이지만, 나는 위에서 나의 일련의 생각을 계속하고 있다) 그 다음, 당신의.bashrc에서 당신의 정보를 얻으세요..bashrc파일 또는 재로그인.

비슷한 대답을 본 적은 있지만, 제게 효과가 있었던 것과 정확히 일치하는 것은 없었습니다. 를 할 필요가 있었습니다.gpg-agent 라이선스:

$ pkill gpg-agent
$ gpg-agent --daemon
$ git commit ...

이게 날 속였어. 할 것 요.user.signingkey개인 키와 다른 코멘트를 사용하여 설정할 수 있습니다.

$ git config --global user.signingkey [your_key_hash]

X 、 OS X 、 os os osgnupg2양조장에서 GPG요원을 죽여야만 했는데, 가끔 이런 일이 일어나죠.

pkill -9 gpg-agent

,을 합니다.env필요한 ): 「」 「」 「」

export GPG_TTY=$(tty)

일반적인 GPG 문제 및 이 답변도 참조하십시오.

로그아웃했다가 MacOS에서 다시 로그인할 때마다 이 오류가 발생합니다.솔루션은 단순한 명령어 1개뿐입니다.

killall gpg-agent

gpg 에이전트의 오류인 것 같습니다. 죽이고 다시 작업하세요.

git 트레이스는 내 상황을 매우 드러나게 했다.

   GIT_TRACE=1 git commit -m "a commit message"
   13:45:39.940081 git.c:344               trace: built-in: git commit -m 'a commit message'
   13:45:39.977999 run-command.c:640       trace: run_command: gpg --status-fd=2 -bsau 'full name <your-email@domain.com>'
   error: gpg failed to sign the data
   fatal: failed to write commit object

첫 번째 키를 생성해야 했습니다.git 값은 그대로 것이 좋습니다.-bsau로그에서 현재 상태를 확인하고 아래를 사용합니다.

결국엔,

   gpg --quick-generate-key "full name <your-email@domain.com>"

그리고 효과가 있었다.

2016년 10월 갱신: 제871호에서는 "Git 2.9에서 Signing stoped working in Git 2.9.3"

Git for Windows 2.10.1은 이틀 전(2016년 10월 4일) 출시되었으며 커밋과 태그의 인터랙티브 GPG 서명을 수정하였습니다.

최근 git의 gpg-sign 변경(Linux에서는 문제가 없음)으로 인해 Windows에서는 MSYS2-git가 MSYS2-gpg와 상호 작용하는 방식에 문제가 있습니다.


원답:

"7.4 Git Tools - Signing Your Work"를 읽으시면 ""user.signingkey 구성이 있을 것입니다.

gpg에 관한 마지막 큰 리팩터링(Git 2.10 이전)은 commit 2f47eae2a로, 여기서 오류 메시지가 이동되었습니다.

이 파일의 로그에 커밋 af2b21e의 최근 변경이 표시됩니다(Git 2.10).

gpg2는 디폴트로는 롱 포맷을 사용하고 있습니다만, 호환성의 이유로 대부분의 디스트리뷰션에서는 여전히 "gpg"가 오래된 1.x 버전인 것 같습니다.또한 이전 버전의 gpg에서는 32비트 쇼트 ID만 표시되므로 매우 안전하지 않습니다.

이는 검증 자체에는 실제로 문제가 되지 않습니다.검증이 성공하면 pgp 시그니처가 정상입니다.
그러나 아직 키가 없고 가져오기를 원하거나 검증에 사용된 키를 정확히 확인하고 확인하려면 키를 더 정확하게 지정해야 합니다.

어떻게 해 보세요.user.signingkey설정 및 사용 중인 gpg 버전(gpg1 또는 gpg2)을 사용하여 오류 메시지에 영향을 미치는지 확인합니다.

또한 commit 0581b54가 존재하며, 이 명령어는 이 명령어의 조건을 변경합니다.gpg failed to sign the data오류 메시지(커밋 0d2b664에 대한 보완):

우리는 현재 stderr의 글을 전혀 읽지 않는다.단, 향후 패치에 포함시키고 싶기 때문에 이 경우에도 gpg는 모든 입력을 읽기 전에 쓰기를 합니다.단, 키 uid가 파이프 버퍼를 가득 채울 가능성은 낮습니다.

Commit 4322353은 gpg가 현재 임시 파일을 사용하므로 그에 대한 올바른 문제가 있을 수 있음을 나타냅니다.

하드 케이스를 처리하는 tempfile 객체를 사용하여 누락된 청소 호출을 추가합니다.

sygwin을 사용하여 sygwin으로 했습니다.gpg2 Git를 설정한 git config gpg.program gpg2.

★★를 해 보세요.echo "test" | gpg2 --clearsign하고 있는지 여부를 합니다.gpg2는 동작하고 있지 않습니다.그냥 세팅하는 게 가장 쉬운 해결책이라고 생각했어요.git config gpg.program gpg방법에서는 핀엔트리를 도 발생합니다그러나 핀엔트리를 설치해야 하는 등 더 나은 오류가 발생합니다.

Ubuntu 18.04에서 이 오류가 발생했는데 키가 만료되었습니다.

이를 확인하기 위해 다음을 실행했는데 키가 만료되었음을 확인했습니다.

gpg --list-keys

이를 수정하기 위해 이전 명령에 표시된 ID를 사용하여 다음을 실행했습니다.

gpg --edit-key <ID>

했습니다.key 0 ★★★★★★★★★★★★★★★★★」key 1타이핑으로 요약되는 이들 지시에 따름key 0expire프롬프트에 따릅니다. 다시 하다, 하다, 하다, 하다를 해 보세요.key 1.

나중에 이를 테스트하기 위해 다음과 같이 실행했습니다.

echo test | gpg --clearsign

수정 전에는 다음 오류로 인해 오류가 발생했습니다.

: 없음: 없음: 비밀키 없음
[failed: gpg: [stdin]: 비밀키

그러나 수정 후 동일한 명령어가 메시지에 성공적으로 서명하여 다시 작동한다는 것을 알게 되었습니다.

Rosetta가 없는 M1 칩에서 homebrew를 사용하는 경우 핀엔트리 프로그램 바이너리는 다른 위치에 설치되므로 다른 위치를 지정해야 합니다.

Andy Hayden의 업데이트된 답변은 다음과 같이 수정해야 합니다.

brew upgrade gnupg  # This has a make step which takes a while
arch -arm64 brew link --overwrite gnupg
arch -arm64 brew install pinentry-mac
echo "pinentry-program /opt/homebrew/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent

교수형 GPG 요원일 수도 있어

★★를 해 보세요.gpgconf --kill gpg-agent 서 설명한 바와 같이

gpg가 동작하는지 테스트한 후 이 정보를 받았기 때문에 실수로 gpg를 업데이트한 것 같습니다.

gpg: WARNING: server 'gpg-agent' is older than us (2.1.21 < 2.2.10)
gpg: Note: Outdated servers may lack important security fixes.
gpg: Note: Use the command "gpgconf --kill all" to restart them.

.gpgconf --kill all쳐주주고

이 에러는, 설정의 문제가 아니고, 키의 유효기간이 지났기 때문에 발생합니다.OSX에서 유효기간을 연장하는 가장 쉬운 방법은 GPG Keychain 앱을 여는 것입니다(설치되어 있는 경우). 그러면 자동으로 연장하라는 메시지가 나타납니다.두 번 클릭하면 끝입니다.

M1 Mac을 사용하고 있는데, 가장 일반적인 솔루션 중 하나를 시도했지만 작동하지 않았습니다. 문제는 GPG 바이너리가 여기에 없다는 것이었습니다=>usr/local/bin

는 ★★★★★★★★★★★★★★★brew재인스톨을 시도했지만, 보존되어 있는 바이너리를 찾을 수 없었습니다.나중에 여기서 GPG 스위트 GUI 를 인스톨 해 보니, 동작했습니다.

마지막으로 커밋에 서명하고 Github에서 배지를 받을 수 있습니다.

저도 같은 문제에 부딪혔어요.이 문제는 다음 문제가 아님을 알려드리게 되어 기쁩니다.git 2.10.0, 하하와 함께gnupg 1.4.21.

gnupg를 1.4.20으로 일시적으로 다운그레이드 하면 문제가 해결되었습니다.

만약 당신이 홈브루를 사용하고 있고, 당신이 저처럼 패키지를 업그레이드했다면, 당신은 아마 그냥 실행할 수 있습니다.brew switch gnupg 1.4.20돌아가가다다

이메일이 올바르게 설정되어 있는지 확인합니다.

git config --global user.email "user@example.com"

인 내 of, 제제 of of of of of of in of of in of of in of of in of of of of of of of of of of of of of of of 가 문제였습니다.gpg에 inside inside inside ~/.gitconfig M1

[gpg]
    program = /opt/homebrew/bin/gpg

: 인가.git gpg껍데기로 하고, 새 껍데기로 ~/.profile서 " " 를 설정합니다.PATH홈브루용입니다.단순히 '찾을 수 '찾을 수 없다', '찾을 수 없다' 이렇게 있습니다.gpg★★★★★★★★★★★★★★★★★★.

내용인지 이 될 것 같습니다.git commit후드 밑에서 하고 있어요.을 하다와 함께 실행합니다.GIT_TRACE=1음음음같 뭇매하다

GIT_TRACE=1 git commit -S -m "MESSAGE"

이것은 커밋할 때 사용자 이름, 이메일, 서명 키 git이 사용하는 것을 보여줍니다.

제 경우, git가 잘못된 사용자 및 커밋에 서명하기 위한 주요 세부사항을 선택했다는 것을 발견했습니다.글로벌이 아닌 repo의 로컬 구성을 사용하는 것이 주된 목적이었고, ("REPO_PATH/.git/config"에 있는) 로컬 git 구성에 다음을 추가함으로써 터미널과 VSCode에서 모두 작동하도록 커밋에 서명했습니다.

[user]
    name = USER NAME
    email = USER EMAIL
    signingKey = SIGNING KEY

다음과 같이 설정할 수도 있습니다.

git config --local user.name "USER NAME"
git config --local user.email "USER EMAIL"
git config --local user.signingkey "USIGNING KEY"

위의 답변은 훌륭하지만 나에게는 효과가 없었다.제 문제를 해결한 것은 공개키와 비밀키를 모두 내보내는 것이었습니다.

내보내는 기계에서 키를 나열하다

$ gpg --list-keys
/home/user/.gnupg/pubring.gpg
--------------------------------
pub 1024D/ABCDFE01 2008-04-13
uid firstname lastname (description) <email@example.com>
sub 2048g/DEFABC01 2008-04-13

키를 내보내다

$ gpg --output mygpgkey_pub.gpg --armor --export ABCDFE01
$ gpg --output mygpgkey_sec.gpg --armor --export-secret-key ABCDFE01

Import처의 머신으로 이동해 Import 합니다.

$ gpg --import ~/mygpgkey_pub.gpg
$ gpg --allow-secret-key-import --import ~/mygpgkey_sec.gpg

빙고봉고, 끝났어!

레퍼런스: https://www.debuntu.org/how-to-importexport-gpg-key-pair/

ps. 키는 원래 bootcamp windows 7에서 만들어졌으며 mac air로 내보냈습니다(같은 물리 머신, 다른 가상 머신).

이 했는데, 알 수 Ubuntu를 했음).GPG_TTY「 」, 「 」, 「 」)를 참조해 주세요. '''gpg명령어가 실패하고 다음 오류가 발생했습니다.

$ echo "test" | gpg --clearsign
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

test
gpg: signing failed: Operation cancelled
gpg: [stdin]: clear-sign failed: Operation cancelled

는 달리기를 해 보았다.gpg--debug-all하다

gpg: DBG: chan_3 <- INQUIRE PINENTRY_LAUNCHED 27472 gnome3 1.1.0 /dev/pts/6 screen-256color -
gpg: DBG: chan_3 -> END
gpg: DBG: chan_3 <- ERR 83886179 Operation cancelled <Pinentry>
gpg: signing failed: Operation cancelled

은 이 문제에 .pinentry 보통 Gpg를 실행합니다.pinentry-curses그래서 ★★★★★★★★★로.pinentry-tty밖에 없었다)aptitude install에러가 사라졌습니다(비밀번호는 풀스크린으로 입력되지 않습니다만, 어쨌든 마음에 들지 않습니다.을 하기 저는 이 해야만 했습니다.pinentry-program /usr/bin/pinentry-tty로로 합니다.~/.gnupg/gpg-agent.conf를 .gpgconf --kill gpg-agent(서양심하다

올바르게 것에 git gpg의 문제가할 수 .X 전송을 사용한SSH 세션 내부에서 커밋을 시도하고 있습니다., env var GUI 의 는 var 의 GUI 의 에 실패합니다.GUI env var.DISPLAY설정되지 않았습니다.

gpg-agent tty를 전용 를 강제할 수 .~/.gnupg/gpg-agent.conf:

pinentry-program /usr/bin/pinentry-tty

다음으로 conf를 새로고침합니다.

gpg-connect-agent reloadagent /bye

(물론 pinentry-ttty를 먼저 설치합니다)

많이 검색해 본 결과, 제 경우 gpg 키가 문제였습니다.

gpg key가 문제인지 확인하려면 먼저 다음 출력을 확인합니다.

GIT_TRACE=1 git commit -m 'message'

문제가 있는 경우는, 다음과 같이 표시됩니다.

10:37:22.346480 run-command.c:637       trace: run_command: gpg --status-fd=2 -bsau <your GPG key>

여기 GPG 키로 내 이름과 이메일이 표시되어 있었는데, 여기에 키가 있을 거야.를 해보시면 됩니다.gpg --status-fd=2 -bsau <your GPG key>

키를 , 다음의 , 를 사용합니다.하다gpg --list-secret-keys --keyid-format=long

다음과 같은 출력이 필요합니다.

/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid                          Hubot 
ssb   4096R/42B317FD4BA89E7A 2016-03-10

그런 다음 다음을 사용하여 키를 업데이트합니다.

git config --global user.signingkey 3AA5C34371567BD2

다시 커밋을 체크하면 키가 문제라면 성공합니다.GitHub 문서를 사용하여 수행할 수 있는 키를 업데이트하려면 암호를 설정해야 합니다.

상세한 것에 대하여는, https://gist.github.com/paolocarrasco/18ca8fe6e63490ae1be23e84a7039374 를 참조해 주세요.

GPG 키의 uid와 관련된 이메일이 git에서 사용하는 이메일과 다를 경우 키에 다른 사용자 ID를 추가하거나 이메일에 정확히 일치하는 키를 사용해야 합니다.

다음 명령을 사용하여 다른 UID를 추가할 수 있습니다.

$ gpg --edit-key

mo https://superuser.com/questions/293184/one-gnupg-pgp-key-pair-two-emails 에 대해서는, 을 참조해 주세요.

위 중 어느 것도 통하지 않습니다.저는 보통 IDE 단말기를 사용하고 있습니다.

이 에러는 가끔 발생하지만, 대부분의 경우 정상적으로 동작합니다.실행 후 문제를 발견했습니다.

 echo "test" | gpg --clearsign

gpg: signing failed: Screen or window too small
gpg: [stdin]: clear-sign failed: Screen or window too small

해결책은 터미널 윈도우 크기를 늘리는 것입니다.

언급URL : https://stackoverflow.com/questions/39494631/gpg-failed-to-sign-the-data-fatal-failed-to-write-commit-object-git-2-10-0