如何在VSCode DevContainer中配置GPG签名且不转发到本地
手动配置VSCode Docker容器内GPG方案(无需remote-containers自动转发)
以下方案适配你使用的VSCode 1.56.2、remote-containers 0.177.2版本,可完全绕过扩展自带的自动转发机制完成配置:
步骤1:本地导出GPG密钥对
在你本地宿主机的终端执行以下操作:
- 执行
gpg --list-secret-keys --keyid-format LONG,找到需要使用的签名密钥ID,记录sec行中/后方的字符串即为密钥ID - 导出公钥:
gpg --export -a [你的密钥ID] > gpg-public.key - 导出私钥:
gpg --export-secret-keys -a [你的密钥ID] > gpg-private.key
注意:导出的私钥属于敏感信息,配置完成后请及时删除本地临时导出的密钥文件
步骤2:将密钥文件挂载到容器
两种挂载方式任选其一即可:
方式1:通过devcontainer.json配置(适用于通过remote-containers打开容器的场景)
在项目的.devcontainer/devcontainer.json文件中添加挂载配置:
"mounts": [ "source=/本地密钥的绝对路径/gpg-public.key,target=/tmp/gpg-public.key,type=bind,readonly", "source=/本地密钥的绝对路径/gpg-private.key,target=/tmp/gpg-private.key,type=bind,readonly" ]
修改保存后重建容器即可生效。
方式2:手动启动容器时添加挂载参数
如果你是手动执行docker run启动容器,在启动命令中添加以下参数:-v /本地密钥的绝对路径/gpg-public.key:/tmp/gpg-public.key:ro -v /本地密钥的绝对路径/gpg-private.key:/tmp/gpg-private.key:ro
步骤3:容器内导入并配置GPG
进入容器终端后依次执行以下命令:
- 导入公钥:
gpg --import /tmp/gpg-public.key - 导入私钥:
gpg --import /tmp/gpg-private.key - 设置密钥信任等级:执行
gpg --edit-key [你的密钥ID],进入交互界面后输入trust,选择等级5(绝对信任),最后输入save退出交互界面 - 验证配置:执行
echo "test" | gpg --clearsign,若正常生成签名内容即为配置成功,若密钥设置了密码,按提示输入密码即可。
可选:持久化GPG配置
如果不需要每次重建容器都重新导入密钥,可以在挂载配置中新增一行,将容器内的~/.gnupg目录绑定挂载到本地宿主机的指定目录,后续启动容器会自动复用已有的GPG配置。
内容的提问来源于stack exchange,提问作者user16175264
相关产品推荐
相关产品推荐

