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

Jenkins Pipeline Groovy克隆GitHub仓库失败及SSH参数疑问

Jenkins Pipeline Git克隆报错问题解答

问题原因及修复方法

核心错误是Host key verification failed,主要有两个问题:

  • Git未信任GitHub的主机密钥:Jenkins执行克隆的Agent机器上,没有将GitHub的主机密钥添加到known_hosts文件中,导致克隆时触发主机密钥验证失败。
  • Git未指定使用Jenkins提供的私钥:你通过sshUserPrivateKey获取了私钥文件路径,但git clone命令默认读取默认路径的私钥(比如~/.ssh/id_rsa),没有用到key_file_var指向的临时私钥文件。

修复后的Pipeline代码示例:

pipeline {
    agent any

    stages {
        stage("Checkout") {
             steps {
                withCredentials([sshUserPrivateKey(credentialsId: 'mySshUserCred', 
                  keyFileVariable: 'key_file_var', usernameVariable: 'username_var')]) {
                    // 先添加GitHub主机密钥到known_hosts,跳过验证
                    sh 'ssh-keyscan github.com >> ~/.ssh/known_hosts'
                    // 指定Git使用Jenkins生成的临时私钥文件
                    sh 'GIT_SSH_COMMAND="ssh -i $key_file_var" git clone git@github.com:SorryAssInc/ops.git'
                }
            } 
        }
    }
}

插件相关说明

你用到的sshUserPrivateKey语法依赖Credentials Plugin和SSH Credentials Plugin,既然能正常编写并执行这段代码,说明这两个插件已经安装,无需额外添加。

keyFileVariable: 'key_file_var'的作用

  • 这个参数的作用是让Jenkins自动把你在凭证中心存储的SSH私钥,写入一个临时文件,然后将该临时文件的完整路径赋值给key_file_var环境变量。
  • 不需要你预先创建这个文件,Jenkins会全权处理文件的创建、私钥写入,在withCredentials代码块执行完毕后,还会自动删除这个临时文件,避免私钥泄露。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:05:53