Chef
Chef - 無密碼的 SSH
執行時:
knife bootstrap {{IP}} --ssh-user centos --ssh-password '' \ --sudo --use-sudo-password --node-name node1 \ --run-list 'recipe[learn_chef_httpd]'
我收到以下錯誤:
ERROR: Net::SSH::AuthenticationFailed: Authentication failed for user centos@{{IP}}@{{IP}}
我正在嘗試連接到沒有密碼的 centos 使用者,因為我想使用 SSH-Key Auth。
我試過傳遞一些排列:
knife bootstrap {{IP}} -x centos -i .chef/james-chef-validator.pem --sudo --run-list 'recipe[learn_chef_httpd]'
都沒有成功…
如果使用 -VV 執行:
... DEBUG: allowed methods: publickey,gssapi-keyex,gssapi-with-mic DEBUG: none failed DEBUG: trying publickey DEBUG: connecting to ssh-agent ERROR: could not connect to ssh-agent ERROR: all authorization methods failed (tried none, publickey) ERROR: Net::SSH::AuthenticationFailed: Authentication failed for user centos@{{IP}}@{{IP}}
有任何想法嗎?
修復!
因此,當您使用託管廚師時,您需要使用引導程序傳遞一個私鑰,並將公鑰放在您的 autherized_keys 文件中……
- 安裝 ChefSDK
- 從託管 Chef 獲取您的入門工具包
- 將入門工具包提取到
~/chef-repo
- 生成一個新的密鑰對:
ssh-keygen
- 將公鑰添加到您的 autherized_keys 文件中:
$ cat id_rsa.pub >> authorized_keys
- 使用以下命令執行刀引導程序:
sudo knife bootstrap {{server-ip}} --ssh-user {{your-server-user}} -i ~/.ssh/id_rsa --sudo --node-name web1
那應該工作!
我還建議您作為 –ssh-user 傳遞的使用者具有無密碼 sudo 訪問權限。