问题标签 [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.
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 进程正在运行?其他脚本(如备份脚本等)也会发生这种情况。有没有办法调试它来自哪里?我花了几个星期来找出这个错误背后的原因,现在我只想知道原因以及如何防止这种情况发生。
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
文件:
我错过了什么?
git - 为什么 git 的 gpg 签名提交上有特殊符号
每当我使用我的 gpg 密钥签署提交时,我总是在提交的签名中得到这些奇怪的符号。
我怀疑这与 gpg 或 git 的编码有关,所以我添加了LC_ALL=C.UTF-8
环境变量并尝试对 git 的配置进行一些更改,但没有成功。
任何人都知道这些符号是什么,我该如何摆脱它们?
GPG v2.2.27
视窗 10 v20H2
git v2.30.1
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
,但这似乎执行得很晚。
docker - 如何在 vscode devcontainer 上设置 gpg 签名而不转发到本地
有没有办法在没有远程容器扩展的情况下在 vscode docker 容器中设置 gpg 自动转发 gpg 签名(因为我无法让它工作)?
我正在使用 vscode 1.56.2 和远程容器 0.177.2
谢谢
github - 尝试签署 git commit 时出现错误 gpg: DBG: Using CREATE_BREAKAWAY_FROM_JOB flag
我正在尝试进行新的单次提交,但出现错误:
有谁知道如何解决这个问题?
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 gpg
:C:\Program Files\Git\usr\bin\gpg.exe
where git
:C:\Program Files\Git\cmd\git.exe
任何帮助,将不胜感激。谢谢
git - 带有 gpg 密钥的 git commit 在 VSCode 中不起作用
添加了一个 gpg 密钥来签署提交。
完成所有配置后,我可以通过 git cli 进行签名。
但是当我使用 vscode 提交时,它会打开一个终端窗口,这样我就可以输入我的密钥密码。该窗口出现了一些错误并且不接受密码并在 vscode 中返回错误:
当我重新启动 gpg-agent 并设法通过 cli 提交时。
当我通过cli输入密码时,它存储在终端的那个部分,我设法通过vscode提交。当您关闭该部分时,错误会返回。
我在 linux Ubuntu 20 上使用 wsl2
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 令牌。
gpgpu - hashcorp/ghaction-import-gpg 是如何工作的?
有这段代码:
为什么我们需要echo "hello world" > temp.txt
?