在Windows上为Git配置GPG

时间:2017-10-28 17:38:10

标签: git bash character-encoding gnupg pgp

我安装了Git for Windows,包括Windows 10和Gpg4win上的Git Bash。默认情况下,我必须将我通过Kleopatra创建的所有密钥重新导入到Git Bash中内置的GPG版本中,并且它不允许我设置代理。我需要做的是自动演唱,这样我不需要每次都输入密码,而只是在给定的时间段内第一次输入密码。怎么可能?

我试图关注this tutorial,但gpg2在Git Bash中执行时没有使用正确的字符集,因此它无法识别包含非ASCII字符的键。

有什么方法可以解决这个问题吗?在Windows上使用GGP进行PGP签名的最佳方法是什么?

2 个答案:

答案 0 :(得分:17)

更新于2018年10月,commented belowPHPirate

λ git --version
git version 2.19.1.windows.1

λ gpg --version
gpg (GnuPG) 2.2.9-unknown
libgcrypt 1.8.3
Copyright (C) 2018 Free Software Foundation, Inc.

git-for-windows/git/releases

中没有该更新的痕迹

原始答案(2017): 默认情况下,Git for Windows包含gpg1,而不是gpg2

vonc@bvonc MINGW64 ~/.ssh
$ gpg --version
gpg (GnuPG) 1.4.21

确实建议使用不同的gpg:

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

使用latest Git for Windows UTF-8 set in locale再次尝试 尝试使用Git simplified path来排除其他程序的干扰。

答案 1 :(得分:5)

(至少)从git 2.19.1开始,git包含了gpg2!

这意味着您不再需要为git签名安装gpg4win。 您问如何设置提交签名,这样您只需要在特定的超时后输入密码即可:gpg-agent可以解决这个问题,并且我测试了它适用于git的gpg(但不适用于gnupg的gpg)。尽管它并不总是对我有用,但应该可以正常使用。

以下是我写下的here的全部说明的简短摘要,假设您已进行签名设置:

  1. 确保您正在使用git的gpg
  2. 更新缓存时间,在C:\Users\username\.gnupg\gpg-agent.conf中(如果文件不存在,则创建文件),分别添加default-cache-ttl 34560000max-cache-ttl 34560000。这些时间以秒为单位,选择您想要的任何内容。
  3. 使用gpgconf --kill gpg-agent重新启动gpg-agent。