我目前使用Kryptonite来保护我用来通过 SSH 连接到主机的私钥。这很有效,除非我需要升级到 root。
当我sudo必须从我的密码管理器中复制一个随机生成的 20 个字符的字符串时,检查我是否真的在密码提示下,然后粘贴它以使我的命令运行。
我更愿意使用我的 Yubikey 来验证sudo. sudo在将 Yubikey 插入本地主机的本地主机上运行时,我可以找到 101 份有关如何执行此操作的指南,但是当我想sudo通过 SSH 在远程主机上使用插入本地计算机的密钥时,我该如何执行此操作?
本地和远程主机都运行最新的 Linux/GNU 发行版,特别是 RHEL/Fedora,如果它有所不同的话。
有pam_ssh_agent_auth,这正是您所需要的。该软件包可用于 Fedora 和 RHEL,因此设置和安装过程非常简单:
yum install pam_ssh_agent_auth
Run Code Online (Sandbox Code Playgroud)
添加到您的/etc/sudoers:
Defaults env_keep += \"SSH_AUTH_SOCK\"
Run Code Online (Sandbox Code Playgroud)
将您的 ssh-public 密钥放入/etc/security/authorized_keys(例如使用 yubikey 获取ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so)
在 的开头添加一行/etc/pam.d/sudo:
auth sufficient pam_ssh_agent_auth.so
Run Code Online (Sandbox Code Playgroud)
然后,您只需将 pkcs11 库添加到您的库中ssh-agent,您就可以在sudo没有密码的情况下运行(使用令牌上的密钥进行身份验证):
ssh-add -s /usr/lib64/pkcs11/opensc-pkcs11.so
sudo -i
Run Code Online (Sandbox Code Playgroud)
的手册页中也描述了此过程pam_ssh_agent_auth。
请注意,yubikey 上的密钥需要事先生成,但这已在 Yubico 文档中进行了描述。