gpt4 book ai didi

ansible - ansible 可以仅在必要时自动询问密码

转载 作者:行者123 更新时间:2023-12-04 08:52:18 30 4
gpt4 key购买 nike

所以ansible-playbook--ask-pass--ask-sudo-pass .有没有办法让 ssh 先尝试没有密码,然后只有在无密码登录失败时才提示输入密码?同样,ansible 是否可以先尝试 sudo 而不使用密码,然后仅在不起作用时才提示?

仅供引用,我有一个小的 shell 函数来尝试通过反复试验来解决这个问题,但我希望像这样的东西被烘焙成 ansible。

get_ansible_auth_args() {
local base_check="ansible all --one-line --inventory-file=deploy/hosts/localhost.yml --args=/bin/true --sudo"
${base_check}
if [[ $? -eq 0 ]]; then
return;
fi
local args="--ask-pass"
${base_check} ${args}
if [[ $? -eq 0 ]]; then
export ANSIBLE_AUTH_ARGS="${args}"
return;
fi
local args="--ask-pass --ask-sudo-pass"
${base_check} ${args}
if [[ $? -eq 0 ]]; then
export ANSIBLE_AUTH_ARGS="${args}"
return;
fi
}

最佳答案

如果您设置 ask_passssh_args正如我在下面展示的那样,ansible 应该在开始时要求您输入密码,并在公钥身份验证不起作用时使用该密码。

[defaults]
ask_pass = True

[ssh_connection]
ssh_args = -o PubkeyAuthentication=yes -o PasswordAuthentication=yes -o ControlMaster=auto -o ControlPersist=60s

这仍然不是完整的解决方案:Catch Being (AFAIK) ansible 使用 sshpass ,因此它在开始时从您那里收集的密码将是它将使用的唯一密码,如果您为不同的机器设置不同的密码,它将无法使用。 :-)

我唯一能想到的其他 hack 是替换 /usr/bin/ssh (或ansible 使用的openssh ssh 中的任何一个),如果需要,您自己的脚本包装了从某个平面文件读取密码的逻辑,我怀疑ansible 会隐藏 tty因此您的脚本将无法从标准输入“读取”密码。

关于ansible - ansible 可以仅在必要时自动询问密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21892636/

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