Ssh

通過 SSH 會話使用 Yubikey 進行 sudo

  • April 11, 2022

我目前使用Kryptonite來保護用於 SSH 進入主機的私鑰。這很好用,除非我需要升級到 root。

當我sudo必須從我的密碼管理器中複製一個隨機生成的 20 個字元的字元串時,請檢查我是否真的在密碼提示符處,然後將其粘貼以執行我的命令。

我更願意使用我的 Yubikey 進行身份驗證sudo。我可以找到 101 條指南,了解如何在sudo將 Yubikey 插入本地主機的情況下在本地主機上執行此操作,但是當我想sudo通過 SSH 在遠端主機上使用插入本地電腦的密鑰時如何執行此操作?

本地和遠端主機都在執行最近的 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-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 文件中進行了描述。

引用自:https://serverfault.com/questions/847783