主机密钥验证失败 - 通过 ssh 下载 terraform 模块

Host Key Verification failed - downloading terraform modules via ssh

尝试通过 ssh 连接到 github 以在 Jenkins 中下载 terraform 模块。下面的terraform init会报错

      steps {
        container('deploy') {
       
          sh "apt-get update && apt-get install ssh -y"
          withCredentials([sshUserPrivateKey(credentialsId: 'github-deploy-key', keyFileVariable: 'IDENTITY_FILE')]) {

              sh '''
              git config core.sshCommand "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ${IDENTITY_FILE}"
               
              terraform init  //fails here - terraform init references github modules
              '''
            }
          
        }
      }

然后在 jenkins 构建控制台日志中 - 我得到一个

..Could not download module "network" source code from "git@github.com:GithubOrg/my-repo.git?ref-c322334..."

Host key verification failed.
fatal: could not read from remote repository.

我原以为设置“StrictHostKeyChecking=no”会防止主机密钥错误。

我能够 运行 使用相同的 ssh 密钥对在本地进行 terraform 初始化,它可以毫无问题地连接到 Github 存储库并下载代码。但是在 Jenkins 的这个容器步骤中它不起作用。有什么建议吗?

我应该以某种方式在容器内设置 ssh known_hosts 文件吗?

我最终不得不设置 known_hosts 文件并使用 jenkins 中的 sshagent 插件。

container('deploy') {
          sh "apt-get update && apt-get install ssh -y"
          sshagent (credentials: ['github-deploy-key']) {

              sh '''
              mkdir -p ~/.ssh
              ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts

              cd terraform
              tfenv use 0.13.7
              terraform init

              '''
            }
          }

--

public 部署密钥位于存储库中,私钥位于 Jenkins 凭据管理器中。