繁体   English   中英

如何在远程服务器上使用 gpg 签名密钥?

[英]how to use gpg signing key on a remote server?

有没有办法在远程服务器中使用 gpg 密钥在 linux 上通过 gpg 程序(命令行工具)进行签名?

我正在使用 gpg 在本地主机上使用测试密钥对二进制文件进行签名。 现在我想使用由服务器访问的相同类型的密钥。 我只是通过更改 gpg 工具的参数来寻找实现。

你可以用OpenSSH>=6.7GnuPG>=2.1.1做到这一点

OpenSSH 6.7 引入了 unix 套接字转发,用于转发 gpg-agent 套接字。 并且 GnuPG 2.1 摆脱了将私钥管理委托给gpg-agentsecring.gpg 这避免了必须在远程机器上保留私钥。

首先,您需要在本地客户端上设置一个额外的套接字。 将此行添加到您的gpg-agent.conf

extra-socket /path/to/extra-socket

重启你的gpg-agent

pkill gpg-agent
gpg-connect-agent /bye

打开到远程服务器的 ssh 连接并将服务器 gpg-agent 套接字转发回客户端(确保gpg-agent尚未在远程服务器上运行)

ssh -R ${GNUPGHOME:-~/.gnupg}/S.gpg-agent:/path/to/extra-socket remote-server

注意: GNUPGHOME是指远程GNUPGHOME的 home 文件夹 如果它与本地GNUPGHOME不同,则必须对其进行调整。

您现在应该能够在远程服务器上签名/加密,前提是它在密钥环中有您的公钥。

注意:您可能需要在您的客户端gpg-agent.conf添加图形 pinentry (qt,gtk),我不确定诅咒是否会起作用。

默认情况下,OpenSSH 在关闭连接时不会删除服务器上的转发套接字。 这将阻止 OpenSSH 在下一次连接期间创建套接字。 如果您有权访问服务器sshd_config ,则可以添加以下行

StreamLocalBindUnlink yes

或在您的注销脚本中删除它( .zlogout , .bash_logout ,...)

rm ${GNUPGHOME:-~/gnupg}/S.gpg-agent

可以在此 GnuPG wiki 页面上找到更多信息。 https://wiki.gnupg.org/AgentForwarding

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM