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

Jenkins SSH Agent抛出StringIndexOutOfBoundsException异常求助

Jenkins Pipeline sshagent块触发StringIndexOutOfBoundsException排查方案

问题描述

使用以下Jenkins Pipeline尝试通过sshagent连接远程服务器时,控制台抛出java.lang.StringIndexOutOfBoundsException异常,即使简化步骤去掉ssh命令、仅保留sshagent块,问题仍然存在:

pipeline {
    agent any
    
    stages {
        stage("Backup") {
            steps {
                sshagent (credentials: ["ssh-key"]) {
                    sh 'ssh administrator@192.168.15.5 "ls -la /path/to/directory"'
                }
            }
        }
    }
}

已完成的排查动作:

  • Jenkins服务器与远程服务器无密码认证连接正常
  • 重新创建Jenkins SSH凭证
  • 调整Jenkins服务器环境变量Path(添加/移除%SYSTEMROOT%\System32\OpenSSH、C:\Program Files\Git\usr\bin)

排查步骤

  • 升级SSH Agent插件:低版本插件可能存在字符串处理逻辑bug,将SSH Agent插件升级至最新稳定版本后重新测试
  • 核对凭证ID准确性:确保pipeline中credentials: ["ssh-key"]的ID与Jenkins凭证中心内的凭证ID完全一致,注意区分大小写、空格及特殊字符
  • 检查节点系统编码:若Jenkins运行在Windows节点上,确认系统编码设置为UTF-8,非UTF-8编码可能导致插件处理字符串时出现索引越界
  • 查看完整异常堆栈:在Jenkins后台日志(Manage Jenkins → System Log)中提取完整的异常堆栈信息,定位插件内部抛出异常的具体代码位置,缩小排查范围
  • 测试节点本地ssh-agent环境:在Jenkins代理节点(master节点则直接在master服务器)的命令行中手动执行ssh-agent命令,尝试加载目标凭证对应的私钥,验证节点本身的ssh-agent环境是否正常
  • 校验私钥格式:确保凭证中的私钥为标准OpenSSH格式(开头为-----BEGIN RSA PRIVATE KEY-----,结尾对应),若为PuTTY的.ppk格式,需转换为OpenSSH格式后重新导入凭证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 05:21:01