18

一、总结

我不能每次都禁用输入密码,我是如何提交的。


2.环境

  • Windows 10 企业版 LTSB 64 位 EN,
  • 混帐 2.16.2.windows.1,
  • gpg 代理 (GnuPG) 2.2.4,
  • gpg4win 3.0.3。

3. 重现步骤

我安装并设置 Gpg4win → 我移动到带有子文件夹的.git文件夹 →</p>

  • git add .,
  • git commit -m "Any description".

4. 预期行为

无需输入密码即可成功签署提交。


5. 实际行为

我得到窗口,我需要在其中输入我的密码:

输入密码

pinentry-qt

请输入密码以解锁 OpenPGP 密钥:

每次提交时,我都需要输入密码;

    <strong>排除:提交之间的小时间。


6.没有帮助

我在我的USERPROFILE文件夹中找到了C:\Users\SashaChernykh——.gnupg\gpg-agent.conf文件。我尝试在此文件中添加no-ttybatchno-use-agent行:

no-tty
batch
no-use-agent

我仍然得到实际行为,而不是预期的。


7. 不提供

  1. 请不要提出,我每次都必须输入密码;
  2. 或者我可以进行未签名的提交;
  3. 我可以在文件中为default-cache-ttlmax-cache-ttl参数C:\Users\SashaChernykh\.gnupg\gpg-agent.conf,但它不会禁用密码输入。
4

3 回答 3

30

默认缓存 ttl 最大缓存 ttl

这是执行此操作的正确方法。默认超时时间为 10 分钟,因此如果两次提交之间的时间超过 10 分钟,则必须延长时间。

C:\Users\SashaChernykh.gnupg\gpg-agent.conf

这不是正确的道路。这将是 GNU/Linux 系统上的路径。

Windows 上 GnuPG 的主目录是 %APPDATA%\gnupg

例如

c:\Users\SashaChernykh\Appdata\Roaming\gnupg\gpg-agent.conf

更改后,您还必须重新启动 gpg-agent 进程。

您可以通过在命令行上使用 gpgconf 来做到这一点。

gpgconf --reload gpg-agent

使用 Gpg4win 更改值并检查它是否真的设置的最简单方法是使用 Kleopatra:

Settings -> Configure Kleopatra -> GnuPG System -> Private Keys

在那里您可以查看和更改的设置:

expire cached PINs after N seconds
set maximum PIN cache lifetime to N seconds 

到一些高价值。


如果您不想输入密码,您只需将其从您的密钥中删除即可。

在命令行上:

gpg --passwd <yourkeyid or email>

您可以将其留空,系统会询问您两次以确认您是否要将其留空。之后,您的密钥的密码被删除,您不必再次输入密码。

您还可以从 Kleopatra 的详细信息窗口中选择更改密码(双击该键)。

于 2018-03-22T07:00:55.543 回答
1

与 Git 无关,您需要运行 gpg-agent。Git for Windows shell 已将其打包。这里有一些说明如何自动运行代理:https ://medium.com/@timmywil/sign-your-commits-on-github-with-gpg-566f07762a43

运行 gpg-agent 的棘手之处 - 启动后,它需要设置环境变量,以便 gpg 可以找到它的 PID 和套接字。

于 2018-03-05T10:09:50.867 回答
0

我认为您需要删除optionbatchno-use-agent. .gnupg\gpg-agent.conf添加use-agent.gnupg\gpg.conf.

于 2018-03-05T13:26:05.767 回答