我想知道是否可以使用 Yubikey 来解锁例如服务器上的 GnuPG 密钥,那么我可以通过 SSH 以某种简单的方式将生成的令牌从 YubiKey 传递到服务器吗?
如何在远程服务器上通过 GnuPG 使用 YubiKey?
信息安全
SSH
pgp
gnupg
服务器
优比键
2021-09-07 05:11:38
2个回答
GnuPG 不使用 Yubikey 生成的任何令牌,但棒实现了 OpenPGP 智能卡协议。密钥存储在 YubiKey 上,它执行所有公钥/私钥加密操作。特殊保护是基于密钥永远无法离开 YubiKey 的事实,因此攻击者最多可以使用密钥(暂时,只要他可以访问解锁的棒),但不能完全掌握它.
GnuPG 有一个称为代理转发的功能。它主要归结为配置gpg-agent
以提供仅用于特定操作的特殊的额外套接字:
extra-socket /home/<user>/.gnupg/S.gpg-agent.extra
然后,配置 SSH 以将套接字上的所有通信转发到远程服务器:
RemoteForward /home/<user>/.gnupg/S.gpg-agent /home/<user>/.gnupg/S.gpg-agent.extra
上面链接的 wiki 页面中提供了更多解释,包括一些关于 nitpicks 的提示。
在新版本的 GnuPG 或 Linux 发行版中,套接字的路径可以改变。这些可以通过
$ gpgconf --list-dirs agent-extra-socket
和
$ gpgconf --list-dirs agent-socket
然后将这些路径添加到您的 SSH 配置中:
Host remote
RemoteForward <remote socket> <local socket>
复制公钥的快速解决方案:
scp .gnupg/pubring.kbx remote:~/.gnupg/
在远程机器上,激活 GPG 代理:
echo use-agent >> ~/.gnupg/gpg.conf
在远程机器上,同样修改 SSH 服务器配置并添加这个参数(/etc/ssh/sshd_config):
StreamLocalBindUnlink yes
重新启动 SSH 服务器,重新连接到远程机器 - 然后它应该可以工作了。
可以在 Matthias Lohr 的博客文章中找到更详细的教程,包括一些故障排除。
其它你可能感兴趣的问题