问题标签 [gpg-agent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
145 浏览

bash - 为什么正在运行的 cronjob 会导致新的随机 gpg-agent 进程运行并导致 gpg-agent 中的缓存密码无效?

下面的简单脚本用于检查 gpg-agent 缓存中的有效密码。当密码有效时,它只会打印 OK,但如果密码无效,则会打印警告消息。

当我运行上述脚本时,它还将运行一个新的 gpg-agent 进程来存储缓存的密码。所以在这种情况下它是PID3309

上面的脚本没有问题。

接下来,我设置了几个通过 cronjob 运行的 bash 脚本。因此,当每个脚本通过 cronjob 运行时,突然间我可以看到一个随机的 gpg-agent 进程运行着不同的 PID(现在我得到了 2 个 gpg-agents):

其中 PID392612是在 cronjob 过程中运行的新随机 gpg-agent。

我不介意它正在运行,但这里的大问题是,当新的随机 gpg-agent 进程正在运行时,当我重新运行上述 bash 脚本以检查 gpg-agent 中的有效密码时,我将收到以下错误:

如果 cronjob 脚本已完成运行,那么我可以再次看到有效的密码:

因此,错误是由运行的随机 gpg-agent 引起的,直到它自行终止,然后缓存的密码将再次有效。这就是让我感到困惑的原因,为什么运行 bash 脚本也可以运行这个 gpg-agent 进程。

因此,这会one example of my cronjob scripts导致新的随机 gpg-agent 运行(仅当我通过 cronjob 运行它时)。如果我通过终端运行它,它不会导致随机 gpg-agent 创建)。我认为演示此代码并不重要,因为来自 cronjob 的所有脚本都产生了相同的问题:

上述脚本的 crontab 如下所示:

26 18 * * * 根 /root/testgpg > /dev/null

所以,在确切的时间,18:26,我创建了一个新的随机 gpg-agent。我没有看到代码有任何问题,也没有任何与 gpg 相关的内容。当我通过 cronjob 像这样运行上述脚本时,为什么一个新的 gpg-agent 进程正在运行?其他脚本(如备份脚本等)也会发生这种情况。有没有办法调试它来自哪里?我花了几个星期来找出这个错误背后的原因,现在我只想知道原因以及如何防止这种情况发生。

0 投票
1 回答
1520 浏览

git - 缓存 GPG 密码以在 Mac 上进行 git 签名

关于该主题已经有一个更通用的线程,在签署 git commits 时记住 GPG 密码,但那里的答案对我不起作用。我的环境是:

  • Mac (macOS@10.15.7)
  • Bash(macOS 自带的默认设置)
  • git v2.27.0
  • GnuPG v2.2.20 (libgcrypt 1.8.5)

我通过 Homebrew 安装了 GnuPG,并将以下设置写入~/.gnupg/gpg-agent.conf文件:

但未应用缓存。每隔十分钟左右git commit,gpg 就会提示我再次输入密码。

这是我的全局.gitignore文件:

我错过了什么?

0 投票
1 回答
57 浏览

git - 为什么 git 的 gpg 签名提交上有特殊符号

每当我使用我的 gpg 密钥签署提交时,我总是在提交的签名中得到这些奇怪的符号。

我怀疑这与 gpg 或 git 的编码有关,所以我添加了LC_ALL=C.UTF-8环境变量并尝试对 git 的配置进行一些更改,但没有成功。

任何人都知道这些符号是什么,我该如何摆脱它们?


GPG v2.2.27

视窗 10 v20H2

git v2.30.1

0 投票
1 回答
111 浏览

ssh - 在 SSH 尝试链接 RemoteForward 中给出的套接字之前运行命令(创建目录)

我目前正在尝试通过 SSH设置GnuPG 代理转发。由于我GNUPGHOME="$XDG_DATA_HOME/gnupg"在本地和远程系统上都进行了设置,因此我没有使用默认的 GPG 套接字路径,而是在我的 中配置了以下内容~/.ssh/config

此配置的问题是,在第一次连接时,远程父目录/run/user/1000/gnupg/d.fj15x7xb73ergseatdpnwdt7/尚不存在,因此RemoteForward失败并显示以下内容:

创建该目录的正确方法是运行gpgconf --create-socketdir(如果目录存在,则为无操作)。但是,当我将它放入我的.bashrc时,它似乎仅在 SSH 尝试转发RemoteForward. 也就是说,只有在建立第二个 SSH 连接时才会创建套接字:

所以我的问题是:如何在 SSH 尝试链接中指定的套接字之前运行命令(在这种情况下gpgconf --create-socketdir)或至少创建一个目录(在这种情况下) ?/run/user/1000/gnupg/d.fj15x7xb73ergseatdpnwdt7/RemoteForward

我在这里唯一的猜测是将命令放入~/.bashrc,但这似乎执行得很晚。

0 投票
0 回答
167 浏览

docker - 如何在 vscode devcontainer 上设置 gpg 签名而不转发到本地

有没有办法在没有远程容器扩展的情况下在 vscode docker 容器中设置 gpg 自动转发 gpg 签名(因为我无法让它工作)?

我正在使用 vscode 1.56.2 和远程容器 0.177.2

谢谢

0 投票
0 回答
438 浏览

github - 尝试签署 git commit 时出现错误 gpg: DBG: Using CREATE_BREAKAWAY_FROM_JOB flag

我正在尝试进行新的单次提交,但出现错误:

有谁知道如何解决这个问题?

0 投票
2 回答
569 浏览

windows - 在 Windows 上使用 Git 的 GPG 代理上的 IPC 错误

我想在 Windows 上使用没有安装 Gpg4win 的 GPG,因为Git for Windows包含我们很好的 GPG 二进制文件,所以我想使用它而不是安装额外的应用程序。

但是,当我设置 GPG(例如添加路径等)时,我遇到了以下错误:

并与gpg-connect-agent

我需要运行代理才能签署 git 提交,所以我不确定发生了什么。

在此错误发生之前,我使用的是 Gpg4win,它完全没有错误(为了确保它不是版本问题,我已经删除了 中的所有内容%userprofile%/.gnupg

系统信息:

  • Windows 10 21H1 19043.1110

  • git version 2.29.2.windows.1

  • where gpgC:\Program Files\Git\usr\bin\gpg.exe

  • where gitC:\Program Files\Git\cmd\git.exe

任何帮助,将不胜感激。谢谢

0 投票
2 回答
260 浏览

git - 带有 gpg 密钥的 git commit 在 VSCode 中不起作用

添加了一个 gpg 密钥来签署提交。

完成所有配置后,我可以通过 git cli 进行签名。

但是当我使用 vscode 提交时,它会打开一个终端窗口,这样我就可以输入我的密钥密码。该窗口出现了一些错误并且不接受密码并在 vscode 中返回错误:

当我重新启动 gpg-agent 并设法通过 cli 提交时。

当我通过cli输入密码时,它存储在终端的那个部分,我设法通过vscode提交。当您关闭该部分时,错误会返回。

我在 linux Ubuntu 20 上使用 wsl2

0 投票
0 回答
115 浏览

git - Git 凭证 gpg/pass TTY-only 设置失败并显示“致命:GPG_TTY 未设置”,即使它是

我尝试按照https://github.com/microsoft/Git-Credential-Manager-Core/blob/main/docs/linuxcredstores.md的说明,让 Git-credential-manager-core 在 wsl2 中使用 fish 在 ubuntu 上工作。我选择了选项 2.GPG/Pass,据我了解,我在 wsl2 上属于“无头/仅限 TTY 会话”类别。

我已经生成了 gpg 密钥并初始化了 pass 实用程序。我不明白我是否需要运行 gpg-agent 守护程序,因为指令仅说明“您必须使用 pin-entry 程序配置 gpg-agent”。我确实运行它 gpg-agent --daemon

最后,我设置了GPG_TTY变量,如 echo $GPG_TTY 返回 /dev/pts/0所示。

运行git push origin master导致错误消息:

那为什么要骗我呢?

一般来说,任何有关设置 git 凭据的帮助都是非常受欢迎的,因为我不知道什么工具负责什么以及我是否需要手动运行 gpg-agent。 提前致谢!

我在 Ubuntu 20.04 上运行在带有鱼壳的 linux 2 的 windows 子系统中。我只想能够推送到我的私人存储库,而无需每次都查找 github 令牌。

0 投票
0 回答
10 浏览

gpgpu - hashcorp/ghaction-import-gpg 是如何工作的?

有这段代码

为什么我们需要echo "hello world" > temp.txt