如何在Jenkins SSH代理中接受SSH主机验证

4
请参考以下Jenkins流水线脚本:
sshagent(['sshuser']) {
    sh "git clone ssh://git@git.local.com/test/test-commit.git"         
}

我经常在Jenkins中看到以下日志:

Cloning into 'test-commit'...
Host key verification failed.
fatal: Could not read from remote repository.

我尝试了几种自动接受主机验证的方法,但都失败了,感到非常沮丧。


1
你是如何解决这个问题的?你使用下面的答案绕过了检查吗? - fuzzi
2个回答

4

如果你的主要关注点是git,你可以使用GIT_SSH_COMMAND环境变量。它允许你注入ssh选项:

stage('My git stage') {
    environment {
        GIT_SSH_COMMAND = "ssh -o StrictHostKeyChecking=no"
    }
    steps {
        sshagent(['sshuser']) {
            sh "git clone ssh://git@git.local.com/test/test-commit.git"         
        }
    }
}

请注意,这会带来一些安全问题。您可能需要调查:https://www.symantec.com/connect/articles/ssh-host-key-protection

(注:本文提到了SSH主机密钥保护的安全问题)


我尝试了这个解决方案,但是我仍然遇到了问题,就像问题中定义的那样:主机密钥验证失败。致命错误:无法从远程存储库读取。 - fuzzi

0

在 GitHub 更改 RSA 密钥后,我遇到了这个问题。我们的一些作业正在主节点上运行,并使用 ssh-agent 插件。

结果发现 ssh-agent 在 Docker 容器中运行,并将已知主机存储在特定格式的 ~/.ssh/known_hosts 文件中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接