通过SSH会话使用Yubikey进行sudo

我目前使用Kryptonite来处理保护我使用SSH进入主机的私钥。 这工作得很好,除非我需要升级到根。

当我sudo我必须从我的密码pipe理器复制一个随机生成的20个字符的string,检查我真的在密码提示,并粘贴它来让我的命令运行。

我宁愿用我的Yubikey来authenticationsudo 。 我可以find101指南如何做到这一点,当本地主机与本地主机上插入Yubikey时,但是我怎么能做到这一点,当我想在远程主机通过SSH sudo与插入我的本地机?

本地和远程主机都运行最近的Linux / GNU发行版,特别是RHEL / Fedora,如果它有所作为。

pam_ssh_agent_auth ,正是你所需要的。 这个软件包可用于Fedora和RHEL,所以安装和安装过程非常简单:

 yum install pam_ssh_agent_auth 

添加到你的/etc/sudoers

 Defaults env_keep += \"SSH_AUTH_SOCK\" 

把你的SSH公钥放到/etc/security/authorized_keys (例如使用ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so从yubikey获得)

/etc/pam.d/sudo的开头添加一行:

 auth sufficient pam_ssh_agent_auth.so 

然后,您只需将pkcs11库添加到您的ssh-agent并且可以在不使用密码的情况下运行sudo (使用令牌上的密钥进行身份validation):

 ssh-add -s /usr/lib64/pkcs11/opensc-pkcs11.so sudo -i 

该过程也在pam_ssh_agent_auth的手册页中进行了pam_ssh_agent_auth

请注意,yubikey上的密钥需要在之前生成,但是这已经在Yubico文档中进行了描述。