jenkins pipeline ssh协议报错处理

一、jenkins版本

jenkins:2.492.3

openssh:OpenSSH_9.8p1, OpenSSL 3.3.1

grep jenkins /etc/passwd

jenkins:x:996:994:Jenkins Automation Server:/var/lib/jenkins:/bin/false

二、报错

三、处理

复制代码
步骤1:手动添加目标主机密钥到Jenkins用户

# 切换到Jenkins用户(需root权限)
sudo su - jenkins -s /bin/bash 
 
# 手动触发SSH连接以记录密钥 
ssh -o StrictHostKeyChecking=no 目标主机IP 
# 输入yes确认密钥(仅首次需要)
exit 

## 原理:强制Jenkins用户完成首次SSH交互,生成 known_hosts 文件


步骤2:配置SSH密钥对权限

# 检查私钥权限 
sudo chmod 600 /var/lib/jenkins/.ssh/id_rsa 
 
# 确保.ssh目录权限正确 
sudo chmod 700 /var/lib/jenkins/.ssh 

步骤3:验证并配置目标主机SSH服务
# 在目标主机检查SSH配置 
sudo vim /etc/ssh/sshd_config 
# 确保以下参数启用 
PasswordAuthentication yes 
PubkeyAuthentication yes 
 
# 重启SSH服务 
sudo systemctl restart sshd 


步骤4:配置Jenkins免密sudo权限(可选)

# 编辑sudoers文件 
sudo visudo 
# 添加以下内容(允许无需密码执行命令)
jenkins ALL=(ALL) NOPASSWD: ALL 



步骤5:Pipeline脚本调试
pipeline {
    agent any 
    stages {
        stage('SCP Test') {
            steps {
                script {
                    // 显示当前用户和密钥路径 
                    sh 'whoami && ls -l /var/lib/jenkins/.ssh'
                    // 测试SCP连接 
                    sh 'scp -v -i /var/lib/jenkins/.ssh/id_rsa file.txt  user@host:/path'
                }
            }
        }
    }
}

四、高级排查技巧

五、补充说明

容器化环境:若Jenkins运行在Docker中,需将宿主机SSH目录挂载到容器:

复制代码
docker run -v /var/lib/jenkins/.ssh:/home/jenkins/.ssh ...

密钥类型兼容性:部分旧系统需使用RSA密钥(非Ed25519),生成时指定:

复制代码
ssh-keygen -t rsa -b 4096 
相关推荐
广州灵眸科技有限公司4 小时前
4G 模组开机自连 systemd 服务方案:基于灵眸科技EAI1106--Core-T
运维·服务器·科技
qq_401700415 小时前
Linux设备树详解
linux·运维·服务器
云梦谭6 小时前
让 Linux 主动连接 Windows:配置 Windows 11 SSH 服务端
linux·windows·ssh
刚入门的大一新生6 小时前
Linux-信号
linux·运维·服务器
云宏信息11 小时前
超融合和存算分离怎么选?从性能、可靠性、扩展、成本四个维度讲述如何精准匹配架构选型 | 附企业降本轻量云方案
运维·服务器·架构·云计算
无足鸟ICT12 小时前
【RHCA+】type命令(判断命令类型)
linux·ssh·bash
咸鱼梦想家π12 小时前
Linux开发工具(下)
linux·运维·服务器
云飞云共享云桌面13 小时前
机械制造研发部门:一台SolidWorks云主机替代 10 台传统图形工作站
运维·服务器·网络·3d·自动化·制造
j7~13 小时前
【ProtoBuf】(篇一)初识 ProtoBuf
运维·服务器·序列化·protobuf·protobuf的适用特点
丰锋ff13 小时前
用户管理命令
linux·运维·服务器