
私は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 のバージョンが、デフォルトの home/.gnupg フォルダ以外の場所を「実際の」kbx を探すことを何らかの方法で認識していたことです。CMDgpg --version
と Rstudio/Git bash を呼び出すと、このことがわかります。保証免責事項の後の最初の行を見てください。これは「Home」で始まります。git バージョンがデフォルトになります。CMD バージョン (キーが表示されます) は次のようになりますC:\Users\USERNAME\AppData\Roaming\gnupg
。実行できるのは、環境変数 を作成することです。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
私の場合、インストールするとGit Bash
パスに 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
取得しますC:\Program Files (x86)\GnuPG\bin\gpg.exe
PowerShellでは、 を実行して(get-command gpg.exe).Path
取得します。C:\Program Files (x86)\Gpg4win\..\GnuPG\bin\gpg.exe