一、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