![将 sudo 与普通用户的私有 SSH 密钥结合使用](https://linux22.com/image/1352581/%E5%B0%86%20sudo%20%E4%B8%8E%E6%99%AE%E9%80%9A%E7%94%A8%E6%88%B7%E7%9A%84%E7%A7%81%E6%9C%89%20SSH%20%E5%AF%86%E9%92%A5%E7%BB%93%E5%90%88%E4%BD%BF%E7%94%A8.png)
作为Ubuntu用户,我想执行一个需要 root 权限的命令,因此我使用sudo
如下命令:
sudo puppet apply /etc/puppet/manifests/site.pp
尽管我的公钥已在远程主机上获得授权,此命令仍会调用 SSH 并提示我输入密码。唯一能让它正常工作的方法是将我的私钥 SSH 密钥添加到 root 用户。
我不想将我的私钥添加到 root 用户。我该如何使用私钥sudo
,但仍然使用私钥Ubuntu用户?
答案1
我发现这在 Server Fault 上回答。本质上,您需要将此行添加到/etc/sudoers
(使用visudo
):
Defaults env_keep+=SSH_AUTH_SOCK
然后你就能够正常运行你的命令了:
sudo puppet apply /etc/puppet/manifests/site.pp
答案2
事实证明,这个问题有一个非常简单的解决方案。
添加 -u 选项允许我指定用户。
sudo -u $USER puppet apply /etc/puppet/manifests/site.pp
现在将使用该用户的 ssh 密钥。