我正在尝试编写一个bash脚本,其中包含使用knife
命令引导Ubuntu客户端节点的命令。当我执行脚本时,knife
命令询问客户端节点的sudo密码,一旦我输入密码,它就按预期工作。但我正在寻找一种没有提示密码的自动方式。这是我用于引导的命令。
knife bootstrap <IP_ADDRESS> -x <USER_NAME> -P <PASSWORD> --sudo
检查后knife bootstrap document,我尝试过给ssh-password,如下所示,但结果相同。
knife bootstrap <IP_ADDRESS> --ssh-user <USER_NAME> --ssh-password <PASSWORD> --sudo
此命令可能出错。我期待刀命令自动登录到客户端和引导程序,但它的问题就像,
<IP_ADDRESS> knife sudo password:
Enter your password:
任何想法??
答案 0 :(得分:5)
查看文档,这可能是您需要的参数:
--use-sudo-password
虽然文档似乎暗示将使用的密码与ssh操作相同,但我不知道在您的情况下这是否足够。
参考:https://docs.chef.io/knife_bootstrap.html#knife-bootstrap-options
答案 1 :(得分:3)
如果您想避免使用密码,可以在chef-node上设置工作站的ssh密钥并运行
knife bootstrap yourclient.domain.com -x <USER_NAME> -i ~/.ssh/id_rsa -N client1 --sudo
答案 2 :(得分:2)
这就是我的工作方式。
echo <SSH_PASSWORD> | knife bootstrap <IP_ADDRESS> -x <USER_NAME> -P <PASSWORD> --sudo
答案 3 :(得分:0)
我在你的命令中看到一个拼写错误
应为--ssh-password
你拥有的是--sh-password
答案 4 :(得分:0)
查看/etc/sudoers文件中的NOPASSWD选项。这会配置sudo以禁止密码检查。
答案 5 :(得分:0)
发生了两种身份验证:
sudo
身份验证(通常需要密码)。当你第一次引导机器时,我认为你不能避免需要sudo密码。
我见过Ruby代码可以通过SSH连接传递sudo密码(因此用户不必在命令中间键入它),但我不认为knife
有内置的。
答案 6 :(得分:0)
需要以这种方式使用(为我工作)
knife bootstrap $ipaddr --ssh-user $userid --ssh-password $pswd --node-name $hostname --sudo --use-sudo-password -P $pswd
- 使用-须藤密码 此选项也需要提供密码,与您提供--ssh-password
的方式相同