【问题标题】:Disable enter passphrase for each commit禁用每次提交的输入密码
【发布时间】:2018-08-12 21:57:06
【问题描述】:

1。总结

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


2。环境

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

3。重现步骤

I install and set Gpg4win → 我移动到带有.git 子文件夹的文件夹 →

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

4。预期行为

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


5。实际行为

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

pinentry-qt

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

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

    排除:提交之间的小时间。


6。没有帮助

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

no-tty
batch
no-use-agent

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


7。不提供

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

【问题讨论】:

标签: git gnupg gpg-agent git-sign


【解决方案1】:

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

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

【讨论】:

  • kan,谢谢,我读了这篇文章。 Assuming you are using Git for Windows (formerly called Git Bash) — 对不起,我不使用 Windows 版 Git,I use Far mode in ConEmu。谢谢。
  • @СашаЧерных 只需弄清楚如何在您的情况下设置环境变量。代理启动时会打印出变量的值(如果您指定 --write-env-file,则将其写入文件)。
  • @kan,您的解决方案是否适用于您的环境? The tricky bit of running the gpg-agent - after it starts, it needs to set environment variables so that gpg could find its PID and socket. — 我怎样才能找到,我需要设置哪个变量和值?你能举个例子吗?谢谢。
【解决方案2】:

我认为您需要从.gnupg\gpg-agent.conf 中删除batch 选项和no-use-agent。将use-agent 添加到.gnupg\gpg.conf

【讨论】:

  • 博士,没有任何改变。我的%USERPROFILE%/.gnupg/gpg.conf 文件——no-tty;我的%USERPROFILE%/.gnupg/gpg.conf 文件——use-agent。我重新启动 Windows → 我第一次提交 → 我输入我的密码 → Enter。我进行下一次提交 → 我需要再次输入密码。谢谢。
【解决方案3】:

默认缓存-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 的详细信息窗口中选择更改密码(双击该键)。

【讨论】:

  • 安德烈·海内克,感谢您的回答。 // 1. 如果我重新启动计算机,我需要再次输入我的密码,我什么时候提交? // 2. 我可以设置 N 秒。但是经过 N 秒后,我需要再次输入密码。有什么办法,我不需要永远输入密码,而不是在 N 秒过后?谢谢。
  • 在命令行“gpg --passwd ”将允许您更改密码。您可以将其留空,系统会询问您两次以确认您是否要将其留空。之后,您的密钥的密码被删除,您不必再次输入密码。这听起来像是您想要的安全模型,如果您足够信任您的本地系统/文件系统,以至于您总是希望解锁您的密钥,这很好。您还可以从 Kleopatra 的详细信息窗口中选择更改密码(双击该键)。
猜你喜欢
  • 2023-02-16
  • 2015-03-30
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 2016-07-20
相关资源
最近更新 更多