Jenkins,主机密钥验证失败,脚本返回退出代码255。

3

我有一台构建服务器,上面安装了Jenkins 2.73.3,并且还有其他用于部署应用程序的服务器。

我已经设置了一个凭据来连接构建服务器与其他服务器。

但是每次我添加另一个服务器时,它都很难添加,因为虽然我在新服务器中设置了授权密钥,在命令行中可以工作,但在Jenkins中不能正常运行。

这里有一个失败的小配方:

pipeline {
  agent any

  stages {

    stage('Set conditions') {
      steps {
        sshagent(['xxxx-xxxx-xxxx-xxxx-xxxx']) {
          sh "ssh user@product.company.com 'echo $HOME'"
        }
      }
    }

  }
}

以下是日志错误信息:

[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
[check] Running shell script
+ ssh user@product.company.com echo /var/lib/jenkins
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 12567 killed;
[ssh-agent] Stopped.
Host key verification failed.
[Pipeline] }
[Pipeline] // sshagent
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 255
Finished: FAILURE

可能是Jenkins主机密钥验证失败的重复问题。 - Damon
2个回答

5

看起来解决方案是在shell脚本行中添加StrictHostKeyChecking参数。

sh "ssh -o StrictHostKeyChecking=no user@product.company.com 'echo $HOME'"

3
虽然这样做可以起作用,但它绕过了验证目标主机是否是您想要连接的,并且存在潜在的漏洞利用风险。你应该尝试从每一个构建代理或者如果没有使用构建代理,则从Jenkins主节点ssh到目标主机,以将目标添加到构建代理的~/.ssh/known_hosts文件中。请参见此答案来回答这个问题 - Damon

0
面对类似的错误,通过Jenkins从Linux机器执行ssh到新的Windows机器时遇到问题,而在Linux终端中直接使用ssh命令是可以工作的。我被这个问题困扰着。
以下是连接到新服务器失败的作业日志:
users@tmp/private_key_1077665481980629372.key)
[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
/ama/scm/jenkins/.jenkins/workspace/ABI
+ ssh -o StrictHostKeyChecking=no pms4@mucad
[Pipeline] }
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 909718 killed;
[ssh-agent] Stopped.
[Pipeline] // sshagent
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 255
Finished: FAILURE

以下是成功作业到旧服务器的日志:

users@tmp/private_key_5520255635089660340.key)
[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
/ama/scm/jenkins/.jenkins/workspace/ABI
+ ssh -o StrictHostKeyChecking=no pms4@mucadt
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

mucmspdom\pms4@MUCADTV52 C:\Users\pms4>      f:

mucmspdom\pms4@MUCADTV52 F:\>         call logoff_users.bat 
logoff disconnect user 16
logoff active user 17
logoff disconnect user 65536

mucmspdom\pms4@MUCADTV F:\>         
mucmspdom\pms4@MUCADTV F:\>
[Pipeline] }
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 909630 killed;
[ssh-agent] Stopped.
[Pipeline] // sshagent
[Pipeline] }
[Pipeline] // stage
[Pipeline] sh
+ echo 'Task Complete. Goodbye!'
Task Complete. Goodbye!
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

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