1

当我chef knife solo与具有 sudo 访问权限的非 root 用户一起使用时,它总是询问我该用户的密码。但是,我已经关闭了对该服务器的密码访问。

$ bundle exec knife solo cook supersecretuser@productionserver -VV
Starting 'Run'
Running Chef on productionserver...
Checking Chef version...
DEBUG: Initial command sudo chef-solo --version 2>/dev/null | awk '$1 == "Chef:" {print $2}'
DEBUG: Initial command sudo -V
DEBUG: Running processed command sudo -V
DEBUG: sudo -V stdout: Sudo version 1.8.9p5

DEBUG: sudo -V stdout: Sudoers policy plugin version 1.8.9p5
Sudoers file grammar version 43

DEBUG: sudo -V stdout: Sudoers I/O plugin version 1.8.9p5

DEBUG: Running processed command sudo -E -p 'knife sudo password: ' chef-solo --version 2>/dev/null | awk '$1 == "Chef:" {print $2}'
Enter the password for supersecretuser@productionserver: 

我已将我的 ssh 密钥添加到服务器,ssh supersecretuser@productionserver并且无需密码即可通过 ssh 进入该服务器。

我已经chef knife solo在我的登台服务器上使用了 root 用户,它工作正常。

我已经尝试使用该-i选项显式传递我的 ssh 密钥,chef knife solo cook supersecretuser@productionserver -i ~/.ssh/id_rsa.pub而刀独奏似乎没有使用它。关于下一步尝试什么的任何想法?

注意:我正在展示cook,因为那是我所在的地方。我做了一个prepare并且它起作用了,因为我还没有关闭密码访问 - 这是我第一次发生的cook- 所以我只能输入密码。

4

1 回答 1

2

你在 ssh 和 sudo 之间搞混了,检查你的 sudoers 文件中的 supersecretuser 条目,它应该如下所示:

#Vagrant entry to allow sudo from vagrant
vagrant ALL=(ALL) NOPASSWD: ALL

这里允许 vagrant 用户在没有密码的情况下 sudo 任何命令。

于 2014-09-09T07:58:02.000 回答