gpt4 book ai didi

ruby - 使用 Chef 添加 ssh key

转载 作者:数据小太阳 更新时间:2023-10-29 08:04:18 25 4
gpt4 key购买 nike

我想使用 Chef 将 SSH 私钥添加到机器。

我是 Chef 新手,不是 ruby​​ 程序员,所以下面的代码可能不太理想

我的 Recipe 包括以下内容:

execute "add private ssh key" do
command 'ssh-add ' + ::File.join('/home', node['user'], '.ssh/keys/id_rsa')
user node['user']
end

在目标机器上运行 sudo chef-client 后,我们在尝试添加 SSH key 时收到“无法打开与您的身份验证代理的连接”。

这表明 ssh 客户端未运行,因此我将配方更改为以 eval $(ssh-agent) && 开头,以便启动客户端。在此之后,在 shell 中运行 sudo chef-client 我们看到绿色的命令,表示命令已成功执行。

但是,尚未为登录用户添加 id_rsa key ,而且我看到 SSH 客户端未运行。

我可能是在咆哮错误的 T 恤,但这对我来说表明 key 是为不同的用户添加的 - 可能是使用 sudo 运行 Chef 的副作用(Chef 在不使用 sudo 时不起作用)。

有没有人解决过这个问题,或者使用 Chef 向机器添加 SSH key ?

最佳答案

从你的问题中不确定你在找什么。 ssh-add 应用于在用户主机上加载代理,以便私钥可以在主机之间转发。这应该通过用户客户端上的登录脚本(例如 .bashrc)来完成。

抱歉,如果我弄错了,但我认为您很可能想为服务器上的用户向 authorized_keys 文件添加公钥,以便他们可以通过私钥进行身份验证。为此,您可以在执行资源中附加该行:

execute "add pub key" do
command "echo #{node['pub_key']} >> ~#{node['ssh_user']}/.ssh/authorized_keys"
not_if "grep #{node['pub_key']} ~#{node['ssh_user']}/.ssh/authorized_keys"
end

稍微好一点的方法是使用 line Recipe ,它为您提供 insert_if_no_match 资源。

可能最好的方法是使用 users 社区说明书,它可以从 data_bags 安装公钥。

关于ruby - 使用 Chef 添加 ssh key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22809270/

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