我目前正在研究使用 Yubikey (NEO) 来存储我的用户的私有 SSH 密钥的可能性。通过搜索互联网,我找到了几个地方,这些地方解释了如何生成 GPG 主密钥和子密钥,将其导入 Yubikey,导出和转换公钥并设置 gpg-agent 以通过 ssh 连接。
我似乎找不到任何关于使用 OpenSSH 签署用户密钥的方法来签署密钥并将其加载到 gpg-agent 的方法。对于我的服务器,我使用 ssh-keygen 生成了一个密钥,并通过 sshd_config 中的 TrustedUserCAKeys 将该密钥设置为 CA。将 GPG 公钥转换为 OpenSSH 公钥后,我可以使用 ssh-keygen 对其进行签名,但我无法让 gpg-agent 将私钥与签名的公钥结合使用。我知道我可以将签名密钥放在服务器上的 authorized_keys 文件中,但在我使用 TrustedUserCAKeys 的用例中,主要优点是它减轻了必须为所有服务器上的所有用户维护一个 authorized_keys 文件的负担,而不是只有维护一个revoked_keys 列表。所以我' d 希望将签名密钥放在客户端而不是服务器端。将它放在服务器端会破坏首先签署密钥的目的,除了添加的到期日期。
如果有办法使用 PuTTY、MobaXterm 或其他一些 Windows SSH 连接工具或任何工具来建立 SSH 连接,则不需要将签名的公钥加载到 Yubikey 和/或 gpg-agent使用签名的公钥而不是未签名的公钥,无论是通过 Yubikey、gpg-agent 还是单独加载文件,这也是一个很好的解决方案。
这是可能的还是没有解决方案(在 Windows 上)支持包含带有私钥的签名公钥?
另外我刚想到的是,如果我可以以某种方式用另一个 PGP 密钥签署子密钥并将该 PGP 密钥用作 ssh CA,那也可以,只要可以将其转换为 OpenSSH 私钥签署常规 SSH 密钥。