gpt4 book ai didi

hadoop - 通过 Chef 在ec2中设置ssh无密码

转载 作者:可可西里 更新时间:2023-11-01 14:54:03 26 4
gpt4 key购买 nike

我在 Chef 中有以下 recipe/default.rb:

# Create empty RSA password
template "#{node[:cluster][:ubuntu]}/my_key.pem" do
source "keys.pem.erb"
mode 0400
owner "ubuntu"
group "ubuntu"
end

bash "ssh-passwordless" do
user "ubuntu"
cwd "#{node[:cluster][:ubuntu]}"
code <<-EOF
eval `ssh-agent -s`
ssh-add #{node[:cluster][:ubuntu]}/my_key.pem
EOF
end

# Create empty RSA password
execute "ssh-keygen" do
command "sudo -u ubuntu ssh-keygen -q -t rsa -N '' -f /home/ubuntu/.ssh/id_rsa"
creates "/home/ubuntu/.ssh/id_rsa"
action :run
end

# Copy public key to node1; if key doesn't exist in authorized_keys, append it to this file
execute <<EOF
cat /home/ubuntu/.ssh/id_rsa.pub | sudo -u ubuntu ssh ubuntu@localhost "(cat > /tmp/tmp.pubkey; mkdir -p .ssh; touch .ssh/authorized_keys; grep #{node[:fqdn]} .ssh/authorized_keys > /dev/null || cat /tmp/tmp.pubkey >> .ssh/authorized_keys; rm /tmp/tmp.pubkey)

如您所见,我尝试了很多方法来让它工作,但是,到目前为止,没有一个成功。目标是消除 EC2 中密码/pem 文件的需要,这样我就可以设置一个 hadoop 集群。我怎样才能做到这一点?

最佳答案

如果我理解得很好,您想在 node1 上创建一个私钥,以便能够通过 ssh 连接到 node2。

您可以通过搜索轻松地做到这一点。

在节点 1 上:

# Create empty RSA password
execute "ssh-keygen" do
command "sudo -u ubuntu ssh-keygen -q -t rsa -N '' -f /home/ubuntu/.ssh/id_rsa"
creates "/home/ubuntu/.ssh/id_rsa"
end

ruby_block "expose public key in attribute" do
block do
node.default['public_key'] = ::File.read("/home/ubuntu/.ssh/id_rsa.pub")
end
end

在node2上,搜索node1的公钥:

node1 = search(:node, "name:node1").first
file '/home/ubuntu/.ssh/authorized_keys' do
content node1['public_key']
end

当然,如果您需要允许多个主机连接,则需要对此进行调整。

关于hadoop - 通过 Chef 在ec2中设置ssh无密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com