Ansible中sudo密码不正确的问题

86次阅读
没有评论

问题描述

在使用Ansible时遇到了一个问题,即在执行sudo操作时无法正确传递密码。当使用如下命令时:

EXEC sshpass -d29 ssh -C -vvv   -o ControlMaster=auto   -o ControlPersist=60s   -o ControlPath="/root/.ansible/cp/ansible-ssh-%h-%p-%r" -o StrictHostKeyChecking=no\  -o Port=58030   -o User=em7admin   -o ConnectTimeout=30 127.0.0.1 /bin/sh   -c 'sudo -H -p "[sudo via ansible, key=mxraphooaxhpruunceorxkcelobceggf] password: "   -S -u root /bin/sh   -c '"'"'echo BECOME-SUCCESS-mxraphooaxhpruunceorxkcelobceggf; LANG=C LC_MESSAGES=C LC_CTYPE=C /usr/bin/python'"'"''

返回了如下输出:

[sudo via ansible, key=mxraphooaxhpruunceorxkcelobceggf] password:
Sorry, try again.
[sudo via ansible, key=mxraphooaxhpruunceorxkcelobceggf] password:
Sorry, try again.
[sudo via ansible, key=mxraphooaxhpruunceorxkcelobceggf] password:
Sorry, try again.
sudo: 3 incorrect password attempts

用户尝试了多种方法来传递sudo密码,包括使用ansible_ssh_pass和从命令行中提取密码,但sudo仍然无法正常工作。他在播放开始后还对ansible_port进行了设置。

解决方案

以下解决方案可能涉及到一些版本和环境的差异,请在执行操作前注意备份。
在Ansible中遇到sudo密码不正确的问题可能是由于某些配置不正确造成的。下面提供了一些可能的解决方案:

方案1:设置Pipelining为False

尝试在ansible.cfg配置文件中将Pipelining设置为False。尽管这可能会导致一些性能损失,但它可能解决sudo密码传递的问题。以下是操作步骤:
1. 打开ansible.cfg配置文件。
2. 找到并将Pipelining设置为False
3. 保存并关闭文件。
这样设置后,再次尝试运行Ansible命令,看看是否能够正确传递sudo密码。

方案2:修改sudoers文件

如果你仍然遇到问题,可以尝试修改目标主机上的sudoers文件,以确保Ansible可以正确执行sudo操作。具体操作如下:
1. 登录到目标主机。
2. 使用文本编辑器打开sudoers文件,通常在/etc/sudoers
3. 查找并注释掉requiretty行,或者添加!requiretty以禁用tty要求。这可以允许在非交互式环境中执行sudo操作。
4. 保存并关闭文件。
尝试再次运行Ansible命令,看看是否能够正确传递sudo密码。

方案3:检查用户权限和sudo配置

确保目标主机上的用户具有适当的权限来执行sudo操作,并且sudo配置正确。你可以检查以下几点:
– 用户是否在/etc/sudoers文件中具有合适的sudo权限。
– 用户是否被添加到sudo用户组。
– 检查sudo配置文件中是否允许密码授权(如果使用密码)。

方案4:调整Ansible任务

根据你提供的Ansible任务,特别是涉及到ansible_portpre_tasks的部分,可能存在一些设置可能影响到sudo密码传递的问题。你可以尝试调整任务,确保ansible_port的设置不影响到sudo密码传递。

请注意: 在尝试这些解决方案之前,请务必备份你的数据和配置文件,以免因操作不当造成不可逆的损失。

结论

如果你遇到Ansible中sudo密码不正确的问题,可以尝试上述解决方案来解决问题。在调整配置和设置之前,请确保充分理解每个解决方案的影响,以避免潜在的问题。如果问题仍然存在,你可能需要深入研究具体的配置和环境,以找出更准确的解决方法。

正文完