我目前使用氪石处理保护我用于 SSH 访问主机的私钥。这很好用,除非我需要升级到 root。
当我sudo
必须从密码管理器中复制一个随机生成的 20 个字符的字符串时,检查我是否确实处于密码提示符下,然后粘贴它以运行我的命令。
我更愿意使用 Yubikey 进行身份验证sudo
。我可以找到 101 个指南,介绍如何在sudo
将 Yubikey 插入本地主机的情况下在本地主机上进行身份验证,但是当我想通过sudo
SSH 在远程主机上进行身份验证时,我该如何将密钥插入本地计算机?
本地和远程主机都运行最新的 Linux/GNU 发行版,具体来说是 RHEL/Fedora(如果有区别的话)。
答案1
有pam_ssh_agent_auth
,它完全满足您的需求。此软件包适用于 Fedora 和 RHEL,因此设置和安装过程非常简单:
yum install pam_ssh_agent_auth
添加到您的/etc/sudoers
:
Defaults env_keep += \"SSH_AUTH_SOCK\"
把你的 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
然后您只需将 pkcs11 库添加到您的库中ssh-agent
,即可sudo
无需密码运行(使用令牌上的密钥进行身份验证):
ssh-add -s /usr/lib64/pkcs11/opensc-pkcs11.so
sudo -i
这个过程在pam_ssh_agent_auth
。
请注意,yubikey 上的密钥需要提前生成,但这在 Yubico 文档中已经描述过。