【问题标题】:How to give password for ssh commands in chef-recipe如何在 chef-recipe 中为 ssh 命令提供密码
【发布时间】:2015-05-31 18:52:30
【问题描述】:

我在 chef-server 上运行一个食谱,它要求我提供远程机器上的 ssh 密码。 在运行食谱时,厨师客户要求输入机器密码,即使我提供了食谱也不起作用。任何人都可以在这方面帮助我。 这是我的食谱

    execute "run ssh" do
     command "rsync -avz --progress /opt/tomcat7/webapps/ROOT/static root@X.X.X.X:/opt/chef/rsyncEx"
    end

【问题讨论】:

  • 您的-i 选项不正确。它需要指向密钥而不是 known_hosts 文件。您需要确保在每台服务器上正确设置您的密钥

标签: ssh passwords chef-infra rsync knife


【解决方案1】:

我们应该尝试使用 ssh 密钥,而不是使用这种石器时代的技术, 为此,首先在我们将要运行我们的配方的远程机器上生成 ssh 密钥。

[root@node01 ~]# ssh-keygen

记住不要为密钥文件提供任何密码

[root@node01 ~]# chmod 700 ~/.ssh
[root@node01 ~]# chmod 600 ~/.ssh/*
[root@node01 ~]# ssh root@node02 'mkdir -p /root/.ssh'
[root@node01 ~]# scp /root/.ssh/id_rsa.pub root@node02:/root/.ssh/authorized_keys
[root@node01 ~]# ssh root@node02 'chmod  700 /root/.ssh'
[root@node01 ~]# ssh root@node02 'chmod  600 /root/.ssh/*'

现在我们可以不用密码登录了

[root@node01 ~]# ssh root@node02

现在要运行我们配方中的任何 sh 命令,请使用 ssh key ,对于我在运行 rsync 时的场景,我使用了这个

execute "static_backup" do
    command "rsync -avz --progress -e 'ssh -i /root/.ssh/id_rsa -C -c blowfish' /opt/tomcat7/webapps/static root@node2:/opt/chef/rsyncEx"
    only_if {node.name=='node2'} 
end

【讨论】:

    最近更新 更多