
Windows 10 시스템에 GPG4Win과 Kleopatra를 설치하고 다른 컴퓨터에서 생성된 공개 및 개인 키 파일을 가져왔습니다. 내 목표는 이 키를 사용하여 Github에서 커밋에 서명하는 것입니다(과거에 이전 컴퓨터에서 수행한 작업). 키를 가져온 후 다음 명령을 실행합니다.Windows 명령줄 또는 Powershell, 키가 표시됩니다.
C:\Users\michael>gpg --list-keys
C:\Users\michael\AppData\Roaming\gnupg\pubring.kbx
---------------------------------------------
pub rsa4096 2020-01-14 [SC]
<snipped the fingerprint>
uid [ultimate] Michael (Github) <[email protected]>
sub rsa4096 2020-01-14 [E]
그러나 git bash에서 이 명령을 실행하면(첫 번째 명령 이후 git bash를 다시 시작) 아무것도 표시되지 않습니다.
$ git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
$ gpg --list-secret-keys
$ gpg --list-keys
Windows 명령줄에는 키가 표시되지만 git bash에는 표시되지 않는 이유는 무엇입니까(GPG 프로그램을 올바르게 설정한 후에도)? 내 생각엔 여전히 경로와 관련이 있는 것 같지만 전역 git 설정을 설정하면 문제가 해결될 것이라고 생각했습니다.
답변1
나는 같은 문제가있었습니다. 내 생각에 문제는 내가 설치한 GPG4WIN 버전이 내 "실제" kbx에 대해 기본 home/.gnupg 폴더가 아닌 다른 곳을 찾는다는 사실이었습니다. gpg --version
CMD 및 Rstudio/Git bash를 호출하여 이를 확인할 수 있습니다 . 보증 면책 조항 뒤의 첫 번째 줄을 살펴보십시오. "집"으로 시작합니다. 귀하의 Git 버전이 기본값이 됩니다. 키를 표시하는 CMD 버전은 C:\Users\USERNAME\AppData\Roaming\gnupg
. 당신이 할 수 있는 일은 다음과 같은 환경 변수를 만드는 것입니다.그누프홈실제 집 위치로 설정하세요. 이는 다른 모든 설정을 무시하며 다음에 bash 내에서 gpg를 호출하면 키를 찾아야 합니다.
답변2
@avraham 제안은 GPG가 GPG4WIN 디렉토리를 사용하도록 하는 데 도움이 되었지만 git 자체는 여전히 저장된 자체 gpg 바이너리를 사용하고 있어 내 GPG4WIN GPG 저장소를 읽을 수 없었습니다.
git bash가 GPGWIN 버전을 사용하도록 강제하려면 .bash_profile을 사용하여 PATH 변수를 다시 작성하여 폴더 검색 순서의 우선순위를 지정해야 했기 때문에 GPG4WIN 폴더가 먼저 검색되었습니다. (기본적으로 git bash는 해당 폴더가 경로 구성에서 더 높기 때문에 gpg 버전인 C:\Program Files\Git\usr\bin\gpg.exe를 사용합니다.)
경로 변수를 다시 작성하기 전에 Windows 환경 변수에서 상속된 경로 앞에 git의 자체 경로가 나열되었습니다.
$ where gpg
C:\Program Files\Git\usr\bin\gpg.exe
C:\Program Files (x86)\GnuPG\bin\gpg.exe
내 홈 디렉터리에 다음 .bash_profile 파일을 작성한 후:
$ cat .bash_profile
# Custom configuration file to force GIT bash to use GPG from GPG4WIN
export PATH=/c/PROGRA~2/GnuPG/bin:/c/Users/ez/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin
참고: 저는 bash의 해석 문제를 피하기 위해 'Program Files (x86)'에 대한 짧은 이름을 사용하고 있습니다.
그 후, 나는 .bash_profile을 소싱했고 마지막으로 git bash는 명령줄에서 GPG4WIN 버전의 gpg를 사용했습니다. 이것이 작동하는지 확인하려면 where gpg
다음을 다시 실행하십시오.
$ where gpg
C:\Program Files (x86)\GnuPG\bin\gpg.exe
C:\Program Files\Git\usr\bin\gpg.exe
답변3
제 경우에는 install 을 실행하면 Git Bash
path 에 gpg도 설치되고 C:\Program Files\Git\usr\bin\gpg.exe
, GPG4Win과 Kleopatra도 설치됩니다.
Bash에서 나는 실행 where gpg
하고 두 경로를 모두 얻습니다.C:\Program Files\Git\usr\bin\gpg.exe C:\Program Files (x86)\GnuPG\bin\gpg.exe
CMD에서 나는 실행하고 where gpg
, getC:\Program Files (x86)\GnuPG\bin\gpg.exe
PowerShell에서는 , (get-command gpg.exe).Path
get을 실행합니다.C:\Program Files (x86)\Gpg4win\..\GnuPG\bin\gpg.exe