前言
作为一名程序员和加密爱好者,我对 gpg 和 ssh 的理解是中等技术水平,但我在其中任何一个的基本细节(如配置)、“琐事”(如字母汤规范、魔术变量和互操作)方面都不是一个大专家。我已经完成了几个小时的阅读指南和故障排除,以及几年的 linux 服务器使用,到目前为止我已经完成了很多,但我现在被困住了。
目标
要使用带有 1 个 auth 子密钥的主密钥设置 gpg4win,这让我可以gpg-agent
通过 gpg4win 使用密码提示在 git 和 ssh 中进行身份验证。
西特普
Windows 10 pc,局域网上的 linux 服务器用于测试。ssh、putty、kitty 和 pageant 已经设置并使用较旧的 gpg 密钥 + 我的派生 putty 密钥。Kleopatra 显示一切正常,包括密码提示和 gpg-agent。gpg4win 3.1.7,gnupg 2.2.15,putty/kitty 0.71。
9B59
我使用 ECC (ed25519) 为自己生成了一个新的主密钥,仅用于认证。生成了 2 个 ECC 子密钥(1 个加密,1 个验证+签名)。
作为子项:
- 编号 =
F3DC
- 键盘 =
3289...224A
gpg --export-ssh-key ...
=ssh-ed25519 AAAAC3Nz... openpgp:0x6146F3DC
。
AS 子密钥 keygrip 添加到~\gnupg\sshcontrol
,ssh 密钥添加到服务器的~/authorized_keys
.
gpg-agent
运行--enable-putty-support --enable-ssh-support
. 尝试运行pageant
失败并出现错误“pageant is already running”,表明 ssh 支持在线(不,没有 pageant 运行的实例)。
SSH_AUTH_SOCK
环境变量 = C:\Users\me\AppData\Roaming\gnupg\S.gpg-agent.ssh
. 这个文件存在,在 gpg-agent 启动时总是“最后修改时间”,并且包含一些二进制 foobar。
gpg-connect-agent -r keyinfo_list.txt
报告(除其他键外):
S KEYINFO 3289...224A D - - - P - - -
此时尝试向我的 ssh 服务器进行身份验证失败了,因为“没有支持的身份验证方法(公钥)”,并且没有通过 gpg4win 提示我输入密码。
在 Kleopatra 中执行强制加载密钥的操作后,之前的输出更改为
S KEYINFO 3289...224A D - - 1 P - - -
因此我的 AS 子密钥F3DC
已正确加载和缓存。
此时使用“pageant”(= gpg-agent)通过 putty/kitty 进行身份验证仍然无效。
登录失败的putty事件日志显示:
Event Log: Pageant is running. Requesting keys.
Event Log: Pageant has 0 SSH-2 keys
问
为什么 gpg-agent 不提供使用我的 AS 子项,尽管它已加载到 gpg-agent 中、设置在 中sshcontrol
并列在 my 中authorized_keys
?