官方文档中的以下段落描述了如何在 VSCode 中启用 GPG 密钥共享(从本地主机到远程容器)(https://code.visualstudio.com/docs/remote/containers#_sharing-gpg-keys)。
说明(适用于 Linux)仅指出要共享 GPG 密钥,请gnupg2在本地和容器中安装。但是,如果我已经gnupg2安装但不想共享密钥怎么办?据我所知,VSCode 在完成密钥共享的容器内执行启动后命令,例如:
Copy /home/karlschriek/.gnupg/pubring.kbx to /home/vscode/.gnupg/pubring.kbx
Copy /home/karlschriek/.gnupg/trustdb.gpg to /home/vscode/.gnupg/trustdb.gpg
...
Run Code Online (Sandbox Code Playgroud)
我无法找到可以防止这种情况的设置。据推测,它也使用gpg-agent与本地主机相同的方式。我想阻止这种情况发生。
非对称加密密钥是否在主要密钥容器格式之间从根本上可以互换?例如,我可以将X.509密钥文件转换为PGP或OpenGPG密钥文件吗?
并且 - 假设答案是肯定的 - 以任何格式保留一个密钥对并转换成适合该场合的容器文件格式是"安全中立"吗?
我有点厌倦为X.509,OpenGPG和SSH维护这么多密钥对,当它们都是RSA的核心时.
Subj:如何在不使用本地存储的情况下(在〜/ .gpg下)从gpg获取私钥?
该解决方案不满足要求:
$ gpg --import priv.key $ gpg --export $KEYID >pub.key $ gpg --delete-secret-and-public-key $KEYID
在谈到Git时,我有点像新秀.所以我决定阅读Scott Chacon的Pro Git.BTW好书,强烈推荐它.
无论如何得到了关于签名标签的部分.要使用GPG对标签进行签名,您必须设置私钥.但是,当我跑:
git tag -s v1.6 -m "my signed 1.6 tag"
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
C:\Users\Name\Desktop\git>git tag -s v1.6 -m "my signed 1.6 tag"
gpg: error loading `iconv.dll': The specified module could not be found.
gpg: please see http://www.gnupg.org/download/iconv.html for more information
gpg: skipped "Name <name@gmail.com>": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
error: unable to sign the tag
Run Code Online (Sandbox Code Playgroud)
所以,我完成了错误消息告诉我要做的事情,然后转到链接并按照说明进行操作.我将iconv.dll复制到包含gpg.exe(\ Git\bin)的文件夹中.再次执行命令并得到:
C:\Users\Name\Desktop\git>git tag -s v1.6 -m "my signed 1.6 tag" …Run Code Online (Sandbox Code Playgroud) 这是基于Python的GnuPg用户友好的前端程序.一直试图找到只导入一个公钥的命令,而不是全部.这会阻止文件gpg中的所有键--import Some_pub_keys.txt
我试过这个:gpg --import 6CA398EA Some_pub_keys.txt
要仅导入此密钥6CA398EA,但它不起作用.
是否只有导入一个键的命令?
我正在尝试使用BouncyCastle和PGP2来读取公钥.问题是,因为GnuPG 2.1存储在pubring.kbx而不是pubring.gpg.这导致IOExceptionpublic key ring doesn't start with public key tag: tag 0x0
知道我是否以及如何使用BC与GnuPG 2.1?
我正在尝试从ActiveMQ的公开OpenPGP密钥获取指纹。它们发布在http://www.apache.org/dist/activemq/KEYS上。
不幸的是,并非所有键旁边都列出了指纹。您知道如何进行吗?
我不能每次都禁用输入密码,我如何进行提交。
我安装并设置了Gpg4win吗?我移到带有.git子文件夹的文件夹?
git add .,git commit -m "Any description"。成功签署的提交,无需输入密码。
我进入窗口,在这里我需要输入密码:

pinentry-qt
请输入密码以解锁OpenPGP密钥:
每次提交时,我都需要输入密码。
???? exclude:两次提交之间的间隔时间。
我发现我的USERPROFILE文件夹- C:\Users\SashaChernykh- .gnupg\gpg-agent.conf文件。我尝试将no-tty,batch或no-use-agent行添加到此文件:
no-tty
batch
no-use-agent
Run Code Online (Sandbox Code Playgroud)
我仍然得到实际的行为,这不是预期的。
我曾经用gpg签名过我的提交,一切都很好,但是我突然收到了以下消息:
gpg: keyblock resource '/c/Users/username/path/to/project/C:\Users\username\.gnupg/pubring.kbx': No such file or directory
gpg: skipped "my_key": No secret key
gpg: signing failed: No secret key
error: gpg failed to sign the data
fatal: failed to write commit object
Run Code Online (Sandbox Code Playgroud)
请注意,关键块资源的路径由两个路径组成,实际上是无效的。
有关我的设置的信息
我的提交已自动签名,我的设置来自于这个答案,总而言之:我像平常一样设置了gpg,然后安装了gpg2并每次使用shell文件将密码短语通过管道传输到gpg中。不,我没有得到gpg-agent来执行此操作,尽管如果您知道该怎么做,请回答以下问题:密钥ID在签名中的密钥未对此提交进行签名
我有一个GNUPGHOME指向的环境变量C:\Users\username\.gnupg。我尝试将其更改为,C:/Users/username/.gnupg但斜杠也更改了错误。我尝试将其更改为,/c/Users/username/.gnupg但错误消息变为
gpg: Fatal: can't create directory '/c/Users/username/path/to/project/C:/Users/username/.gnupg': No such file or directory
Run Code Online (Sandbox Code Playgroud)
我也不知道导致此问题的系统上发生了什么变化。
相关问题
这个问题与不同的路径非常相似,但是没有解决:Git提交签名GPG问题
该评论是检查gitconfig中的路径,但是我在任何gitconfig中都没有指向gnupg目录的路径,并且它不会我认为无论如何都不要以回购路径作为前缀。我主要有这个~\.gitconfig:
[user]
signingkey = my_key
[commit]
gpgsign = true
[gpg]
program = C:\\Users\\username\\gpg-no-tty.sh …Run Code Online (Sandbox Code Playgroud) 我使用这里给出的说明和代码创建了一对*.pub和*.sec文件:
https://www.gnupg.org/documentation/manuals/gnupg/Unattended-GPG-key-generation.html
(我正在使用此文档,因为我想到的最终应用程序是自动加密/解密管道.)
Q1:如何使用gpg2和*.pub文件加密另一个文件?
Q2:如何使用gpg2和协同工具*.sec解密使用配套*.pub文件加密的文件?
重要提示: 我只对那些适合无监督操作的程序化实现的答案感兴趣.请不要发布只能以交互方式进行的答案.我对可以在Python中实现的解决方案特别感兴趣.
请提供相关文档的精确指示.