[ansible]-centos7 使用ansible_ssh_pass

本文详细介绍了在Centos7系统中使用Ansible进行远程主机管理时,如何通过配置ansible_ssh_pass参数实现无需密码认证的过程。包括安装gcc、sshpass、Ansible软件,配置ansible.cfg文件跳过SSH首次连接验证,以及在hosts文件中指定目标主机及密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Centos7 使用ansible_ssh_pass

不做免密将密码写在hosts中

安装gcc等依赖  以便安装sshpass

yum –y install  gcc

 

安装sshpass

tar zxvf sshpass-1.06.tar.gz

cd sshpass-1.06/

./configure

make && make install


 

安装ansible

yum –y install ansible

 

 

修改/etc/ansible/ ansible.cfg

ansible.cfg配置文件中,也会找到如下部分:

  1. # uncomment this to disable SSH key host checking
  2. host_key_checking = False 

 

默认host_key_checking部分是注释的,通过找开该行的注释,同样也可以实现跳过 ssh 首次连接提示验证部分。

我的ansible.cfg如下

[defaults]

inventory      = /etc/ansible/inventory/  #需要手动创建

log_path = /var/log/ansible.log

[inventory]

[privilege_escalation]

[paramiko_connection]

[ssh_connection]

host_key_checking = False 

[persistent_connection]

[accelerate]

[selinux]

[colors]

[diff]

 

再inventory下创建test 并输入以下内容测试ansible_ssh_pass

[test]

10.6.12.109 ansible_ssh_pass='hengtian@123'

10.6.12.102  ansible_ssh_host=10.6.12.102 ansible_ssh_pass="hengtian@123"

 

 

<think>好的,用户现在想知道如何在Ansible的主机群组中自动提权,特别是以他们提供的示例配置为例。我需要先回顾之前的对话,确保回答的一致性连贯性。 首先,用户之前的问题是关于主机群组中有部分主机已经是root用户的情况下,强制提权的影响。我给出了影响分析优化方案,比如分组配置或动态判断是否需要提权。现在用户进一步询问如何实现自动提权,特别是在他们的示例配置中,使用ansible_become_passansible_become_user等参数。 接下来,我需要分析用户提供的示例配置: [m_park_all] 10.104.3.146 ansible_ssh_user=zhyq ansible_become_pass=Always_88jk ansible_become_user=root 这里用户似乎希望为该主机设置SSH用户为zhyq,并通过提权成为root,密码是Always_88jk。需要确认这种配置的可行性以及可能的问题。 用户的需求是让整个主机群组自动提权,也就是说,不需要在Playbook中显式设置become参数,而是在库存文件中定义,实现自动化。这可能涉及到Ansible的变量优先级提权配置的最佳实践。 需要考虑以下几点: 1. Ansible的变量作用域:主机变量、组变量、Playbook变量等。 2. 提权相关参数的正确使用ansible_become、ansible_become_method、ansible_become_user、ansible_become_pass。 3. 安全性问题,比如在库存文件中明文存储密码的风险。 4. 是否存在主机需要不同的提权方式或不同的密码,如何处理这种情况。 可能用户希望简化配置,通过库存文件集中管理提权信息,而不需要在每个Playbook中重复设置。这需要验证Ansible是否支持在库存文件中设置这些变量,并正确应用。 另外,需要检查用户提供的示例是否正确。例如,ansible_become_user通常设置为目标用户(如root),而ansible_become_pass是提权时的密码。同时,是否需要在Playbook中启用become,或者在库存文件中设置ansible_become=yes来触发提权。 可能的问题包括: - 如果库存文件中设置了ansible_become_user=rootansible_become_pass,但Playbook中没有启用become,是否会自动提权? - 不同主机的提权方法(如sudo、su)是否需要指定ansible_become_method? - 密码在库存文件中明文存储的安全隐患,是否有替代方案(如使用Vault)? 需要确保回答涵盖这些方面,并提供最佳实践建议,同时给出具体的配置示例验证步骤。此外,要提醒用户注意安全性,避免在库存文件中直接写入密码,尤其是在版本控制系统中。 总结步骤: 1. 解释用户示例配置的可行性潜在问题。 2. 提供自动提权的正确配置方法,包括库存变量Playbook设置。 3. 讨论安全性改进,如使用Vault加密密码。 4. 给出验证步骤,确保配置生效。 5. 可能的高级配置,如处理不同提权方法或不同密码的主机。</think>以下是针对您需求的 **Ansible 自动提权方案深度解析**,包含 **配置示例**、**安全优化** **风险规避指南**: --- ### **一、当前配置分析** #### 原始配置 ```ini [m_park_all] 10.104.3.146 ansible_ssh_user=zhyq ansible_become_pass=Always_88jk ansible_become_user=root ``` - ✅ **功能实现**:能自动通过 sudo 提权到 root - ❌ **安全隐患**:密码明文存储在 inventory 中(若文件泄漏后果严重) --- ### **二、完整自动提权方案** #### 1. **基础版配置** ```ini [m_park_all] 10.104.3.146 ansible_user=zhyq # SSH 连接用户 ansible_become=yes # 强制开启提权 ansible_become_user=root # 提权目标用户 ansible_become_pass=密码 # sudo 密码(需加密处理) ``` **Playbook 示例** (无需额外配置): ```yaml - name: 自动提权演示 hosts: m_park_all tasks: - shell: whoami # 自动以 root 身份执行 ``` #### 2. **执行流程验证** ```bash # 查看实际提权用户(调试用) ansible m_park_all -m shell -a 'whoami' --become # 预期输出应为 "root" ``` --- ### **三、安全增强方案** #### 1. **密码加密(使用 Ansible Vault)** ```bash # 创建加密变量文件 ansible-vault create vars/secrets.yml ``` ```yaml # 内容示例 become_password: Always_88jk ``` #### 2. **安全 inventory 配置** ```ini [m_park_all] 10.104.3.146 ansible_user=zhyq ansible_become=yes ansible_become_user=root ansible_become_pass: "{{ vault_become_password }}" # 引用加密变量 ``` #### 3. **安全执行命令** ```bash ansible-playbook playbook.yml --ask-vault-pass ``` --- ### **四、多主机差异化配置** #### 1. **按主机类型分组** ```ini [m_park_linux] 10.104.3.146 ansible_become_method=su # 使用 su 提权 ansible_become_pass=Linux_P@ss [m_park_bsd] 10.104.5.201 ansible_become_method=sudo # 使用 sudo 提权 ansible_become_pass=BSD_S3cret ``` #### 2. **提权方法适配表** | 系统类型 | `become_method` | 典型场景 | |------------|----------------|-----------------------| | Ubuntu/Debian | sudo | 默认提权方式 | | CentOS/RHEL | sudo | 需要配置 wheel 组 | | FreeBSD | doas | 需安装 doas 工具 | | 老旧系统 | su | sudo 不可用时的替代方案 | --- ### **五、高级防护措施** #### 1. **SSH 证书登录 + sudo 免密** ```ini [m_park_secure] 10.104.3.146 ansible_user=zhyq ansible_ssh_private_key_file=~/.ssh/zhyq_id_rsa ansible_become=yes ansible_become_user=root ansible_become_flags='-n' # 禁用密码提示 ``` **前提条件**:目标主机需配置 sudoers 规则: ```bash # /etc/sudoers 配置 zhyq ALL=(ALL) NOPASSWD: ALL ``` #### 2. **提权日志审计** ```yaml - name: 记录提权操作 hosts: all tasks: - lineinfile: path: /var/log/sudo_audit.log line: "{{ ansible_date_time.iso8601 }} | {{ ansible_user_id }} → {{ ansible_become_user }}" become: yes delegate_to: localhost ``` --- ### **六、故障排查指南** #### 1. **常见错误处理** | 错误现象 | 解决方案 | |----------------------------|---------------------------------| | `Missing sudo password` | 检查 `ansible_become_pass` 是否正确 | | `User is not in sudoers` | 在目标主机配置 sudoers 权限 | | `SUDO requires password` | 确认 `ansible_become_method` 正确 | #### 2. **调试命令** ```bash # 查看实际生效的变量 ansible m_park_all -m debug -a "var=ansible_become,ansible_become_user" # 检查 sudo 配置 ansible m_park_all -m shell -a 'sudo -lU zhyq' ``` --- ### **七、最终推荐方案** ```ini # inventory/production [m_park_all] 10.104.3.146 ansible_user=zhyq ansible_become=yes # group_vars/m_park_all/vault.yml (加密) vault_become_pass: Always_88jk vault_become_user: root # group_vars/m_park_all/main.yml ansible_become_user: "{{ vault_become_user }}" ansible_become_pass: "{{ vault_become_pass }}" ansible_become_method: sudo ``` --- ### **方案优势对比** | 维度 | 基础方案 | 安全增强版 | |-------------|---------------------------|--------------------------| | **密码安全** | 明文存储 | Vault 加密存储 | | **执行效率** | 每次需要输入密码 | 证书登录 + 免密提权 | | **审计能力** | 无操作记录 | 完整提权日志追踪 | | **维护成本** | 低(简单配置) | 中(需要维护加密体系) | 建议根据业务安全等级选择对应方案,生产环境推荐使用 **安全增强版** + **证书登录** 组合方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值