我无法禁用每次输入密码,我如何进行提交。
我安装并设置 Gpg4win → 我移动到带有
.git
子文件夹的文件夹 →
git add .
,git commit -m "Any description"
.无需输入密码即可成功签名提交。
我出现窗口,需要在其中输入我的密码:
pinentry-qt
请输入密码以解锁 OpenPGP 密钥:
每次提交时都需要输入密码;
排除:提交之间的时间很短。
我在我的
USERPROFILE
文件夹中找到 — C:\Users\SashaChernykh
— .gnupg\gpg-agent.conf
文件。我尝试添加到此文件 no-tty、batch 或 no-use-agent 行:
no-tty
batch
no-use-agent
我仍然得到实际的行为,而不是预期的。
default-cache-ttl
文件中的 max-cache-ttl
和 C:\Users\SashaChernykh\.gnupg\gpg-agent.conf
参数设置大值,但它不会禁用密码输入。默认缓存 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 的详细信息窗口中选择更改密码(双击该键)。
与 Git 无关,您需要运行 gpg-agent。 Git for Windows shell 已将其打包。这里有一些如何自动运行代理的说明:https://medium.com/@timmywil/sign-your-commits-on-github-with-gpg-566f07762a43
运行 gpg-agent 的棘手之处 - 启动后,它需要设置环境变量,以便 gpg 可以找到它的 PID 和套接字。
我认为您需要从
batch
中删除 no-use-agent
选项和 .gnupg\gpg-agent.conf
。将 use-agent
添加到 .gnupg\gpg.conf
。
在 Windows 上:
C:\Users\<profile.name>
其中 profile.name 代表当前用户
.gitconfig
文件,否则创建一个[commit] gpgsign = false
。