192.168.200.11 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).", "unreachable": true } 192.168.200.12 | FAILED! => { "changed": false, "module_stderr": "/bin/sh: /usr/bin/python3: 没有那个文件或目录\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 127 }
时间: 2025-04-22 10:29:32 浏览: 44
<think>好的,我现在需要帮助用户解决三个主要问题:wget下载EPEL仓库文件时出现404错误、SSH连接时权限被拒绝,以及Python模块执行失败导致Ansible无法正常工作。让我逐步分析每个问题的可能原因和解决方案。
首先,用户提到使用wget下载epel-release-latest-7.noarch.rpm时出现404错误。根据之前的回答,EPEL的路径结构已经改变,所以用户需要确认正确的URL。我应该再次检查最新的EPEL版本,并确保用户使用的URL正确。此外,可能需要建议用户直接使用yum安装epel-release,这会更简单且避免路径问题。
接下来是SSH的权限被拒绝问题,提示publickey和password。这可能是因为用户没有正确配置SSH密钥认证,或者远程服务器未允许密码登录。需要指导用户生成SSH密钥对,并将公钥上传到目标主机。另外,检查sshd_config文件中的设置,确保允许公钥认证和密码认证(如果需要的话)。同时,权限问题如.ssh目录的权限不正确也可能导致此问题,需要提醒用户检查。
第三个问题是Python3未找到和Ansible模块执行失败。Ansible默认使用Python 2还是Python 3?如果系统默认安装了Python 3,可能需要指定使用Python 3路径。用户可能需要安装Python 3并配置Ansible使用它。此外,Ansible模块执行失败可能由于依赖缺失或模块路径问题,需要检查Python环境是否安装了必要的模块,并确保Ansible的配置正确。
另外,用户之前提到的Ansible安装过程可能涉及EPEL仓库,因此如果EPEL安装不正确,可能导致Ansible及其依赖无法正确安装。需要确保EPEL仓库已正确配置,然后重新安装Ansible及其依赖,包括Python 3相关的包。
还需要综合用户提供的引用内容,特别是创建免密登录用户和配置sudo权限的部分,这可能与SSH连接和Ansible执行权限有关。确保用户已正确设置ansible用户的sudo权限,并且SSH密钥配置正确,以避免权限问题。
最后,验证步骤很重要,需要指导用户如何测试SSH连接、检查Python版本,以及运行简单的Ansible命令来确认问题是否解决。同时,提供相关问题可以帮助用户进一步排查可能遇到的其他问题。</think>根据问题描述,结合EPEL安装、SSH连接、Python环境三个方向,我将分步骤分析解决方案:
---
### 一、解决wget下载404错误(EPEL仓库路径更新)
#### 1. 手动指定新路径下载
```bash
# x86_64架构使用
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
# aarch64架构使用
wget https://dl.fedoraproject.org/pub/epel/7/aarch64/Packages/e/epel-release-7-14.noarch.rpm
```
> 注意:若提示证书错误,可添加`--no-check-certificate`参数[^1]
#### 2. 通过yum直接安装(推荐)
```bash
yum install -y epel-release
```
#### 3. 验证仓库配置
```bash
yum clean all
yum repolist | grep -i epel # 应显示epel仓库状态
```
---
### 二、解决SSH连接问题(Permission denied)
#### 1. 密钥生成与分发
```bash
# 生成密钥对(在ansible控制节点操作)
su - ansible
ssh-keygen -t rsa -b 4096 # 连续回车不设密码
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host # 替换实际用户名和IP
```
#### 2. 检查SSH服务配置
在目标主机上确认:
```bash
vim /etc/ssh/sshd_config
```
确认存在以下配置:
```ini
PubkeyAuthentication yes # 启用公钥认证
AuthorizedKeysFile .ssh/authorized_keys # 密钥存储路径
PasswordAuthentication no # 禁用密码认证(安全加固后)
```
修改后重启服务:
```bash
systemctl restart sshd
```
#### 3. 权限验证
```bash
# 检查目录权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
```
---
### 三、解决Python环境问题
#### 1. 安装Python3(CentOS 7)
```bash
yum install -y python3 python3-pip # 通过EPEL仓库安装
alternatives --set python /usr/bin/python3 # 设置默认python版本
```
#### 2. 配置Ansible使用Python3
在`/etc/ansible/ansible.cfg`中添加:
```ini
[defaults]
interpreter_python = /usr/bin/python3
```
#### 3. 验证Ansible模块
```bash
# 测试ad-hoc命令
ansible all -i "localhost," -m ping -c local
```
预期输出:
```json
localhost | SUCCESS => {
"changed": false,
"ping": "pong"
}
```
---
### 四、综合排错流程图
$$
\begin{array}{ccc}
\text{检查EPEL安装} & \rightarrow & \text{SSH密钥验证} \\
\downarrow & & \downarrow \\
\text{Python3环境配置} & \leftarrow & \text{Ansible模块测试} \\
\end{array}
$$
---
### 相关问题
1. 如何批量部署SSH密钥到多台主机?
2. CentOS 7中如何同时保留Python2和Python3环境?
3. Ansible Playbook执行时出现"module not found"错误如何排查?
4. 如何通过ansible.cfg文件优化SSH连接参数?
[^1]: EPEL官方路径变更公告
[^2]: CentOS 7系统管理员手册
[^3]: Ansible官方SSH配置指南
阅读全文
相关推荐



















