You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins中Ansible插件SSH连接失败问题求助

Jenkins中使用Ansible插件SSH连接失败问题排查与解决

问题描述

执行Ansible插件时出现以下错误:

"Failed to connect to the host via ssh: Load key "/etc/ansible/jenkinsPem": Permission denied\r\nmadchabelo@targethost: Permission denied (publickey,password).", "unreachable": true}

相关配置文件

hosts文件:

[targets]
targethost ansible_user=madchabelo ansible_private_key_file=/etc/ansible/jenkinsPem
mysqlhost ansible_user=madchabelo ansible_private_key_file=/etc/ansible/jenkinsPem

Playbook内容:

---
- name: Playbook for jenkins
  hosts: [targets]
  tasks:
   - name: hello world
     shell: echo Hello World again

异常现象

直接在本地Shell执行以下命令可正常运行:

ansible-playbook -i /etc/ansible/hosts /etc/ansible/playbook/jenkinsansible.yaml

但通过Jenkins的Ansible插件执行时出现权限拒绝错误。

问题原因

核心原因是Jenkins进程默认以jenkins用户运行,该用户没有读取私钥文件/etc/ansible/jenkinsPem的权限。本地Shell执行正常是因为当前登录用户拥有该文件的读取权限,而Jenkins服务使用独立用户,权限不继承。

解决方案

1. 调整私钥文件权限

SSH私钥文件要求严格权限(通常为600),同时需确保jenkins用户拥有读取权限:

# 将私钥文件所有者改为jenkins用户
sudo chown jenkins:jenkins /etc/ansible/jenkinsPem
# 设置符合SSH要求的权限
sudo chmod 600 /etc/ansible/jenkinsPem

2. 检查并调整目录权限

确保jenkins用户能访问/etc/ansible目录:

sudo chmod 700 /etc/ansible
sudo chown jenkins:jenkins /etc/ansible

3. 验证Jenkins用户的SSH连接

切换到jenkins用户,手动测试SSH连接,确认权限问题已解决:

sudo su - jenkins
ssh -i /etc/ansible/jenkinsPem madchabelo@targethost

若能成功登录目标主机,说明权限配置正确,可重新运行Jenkins中的Ansible任务。

4. 插件配置补充(可选)

若上述步骤后仍有问题,可在Jenkins的Ansible插件配置页,手动指定私钥文件的绝对路径,确保插件调用时使用正确的密钥文件。

内容的提问来源于stack exchange,提问作者MadChabelo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:15:43