如何在 chef-recipe 中为 ssh 命令提供密码

How to give password for ssh commands in chef-recipe

我是 运行 厨师服务器上的菜谱,它要求我提供远程计算机上的 ssh 密码。 运行 菜谱主厨客户端要求输入机器密码,即使我提供了菜谱也无法正常工作。谁能帮我解决这个问题。 这是我的食谱

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

我们应该尝试使用 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 密钥,对于我的场景,当 运行ning 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