我的 gpg.conf 文件中有一行写着use-agent
.
我知道这是指 gpg-agent,它是一个守护进程。手册页指出“gpg-agent 是一个独立于任何协议管理秘密(私有)密钥的守护进程。它用作 gpg 和 gpgsm 以及其他一些实用程序的后端。”
任何人都可以在 gpg 的上下文中解释这意味着什么?gpg-agent 的意义何在?
我目前有 GPG 1.4。
Gil*_*il' 45
Gpg-agent 是一个在后台运行的程序(守护进程)并将 GPG 密钥存储在内存中。当 GPG 进程需要密钥时,它会通过套接字联系正在运行的 gpg-agent 程序并请求密钥。如果代理进程有密钥,它会将它提供给 gpg。如果没有,它会尝试从您的密钥环加载加密密钥,并提示您输入密钥的密码。代理获得解密密钥后,将其传递给 gpg 进程。除了 GPG 密钥之外,Gpg-agent 还可以类似地存储 SSH 密钥并将它们提供给 SSH 进程,就像ssh-agent
SSH 附带的程序一样。
使用密钥代理的主要目的是让您不必每次使用密钥时都输入密码。代理将密钥一次又一次地保存在内存中。GPG 本身不能这样做,因为一旦完成它的工作,进程就会终止。
密钥代理可以做的另一件事是允许在远程机器上运行的 GPG 获取本地代理中的密钥(这可能会从本地文件加载它们并提示您输入密码)。Gpg-agent 还不能做到这一点,这是一个计划中的功能。SSH 已经有代理转发很长时间了。(这是不将 gpg-agent 用于 SSH 密钥的原因。)
GPG 1.x 或 2.0.x 知道代理正在运行,因为GPG_AGENT_INFO
设置了变量。此变量包含与代理通信的套接字的位置以及代理的进程 ID。GPG 2.1 总是将代理套接字放在~/.gnupg
. 如果代理进程没有运行,GPG 2.x 总是会启动一个代理进程。
您只需运行gpg-agent
. 如果您想将代理进程作为会话的一部分,您可以将会话管理器的调用替换为gpg-agent my-session-manager
; 一些发行版会自动设置。GPG 会自动启动代理,GPG 2.1 会额外找到一个正在运行的代理,不需要环境变量,所以你不需要这样启动,除非你使用旧版本的 GPG 或者你使用代理来存储其他类型密钥,例如 SSH。
您可以使用shell 命令发送代理命令gpg-connect-agent
。发送kill
命令以终止代理进程(或向其发送信号)。
Gpg-agent 自带 GPG。一些发行版将其单独打包。
归档时间: |
|
查看次数: |
30469 次 |
最近记录: |