Jenkins pipeline 之 scp

在pipeline 中使用sshagent 插件时,jenkins slave节点总是报错:

[public] Running shell script
+ scp -i **** apidoc.tar [email protected]:/home/ubuntu/mypage-apidoc/
Host key verification failed.
lost connection
script returned exit code 1

一开始想到可能是因为这个插件有问题,遂换成withCredentials 插件,代码如下:

withCredentials([sshUserPrivateKey(credentialsId: 'd4b344b4-9a3d-48d2-9fc5-b64dd9b47ea3', keyFileVariable: 'pem')]) {
              // some block
              sh "scp -i ${pem} apidoc.tar [email protected]:/home/ubuntu/mypage-apidoc/"
              sh "ssh -i ${pem} [email protected] \"tar -xvf /home/ubuntu/mypage-apidoc/apidoc.tar -C /home/ubuntu/mypage-apidoc/\""
            }

但是问题依然没有得到解决,还是报这个错,后来发现google上有篇帖子提到这个问题,是由于slave 节点中的known_hosts 中没有对应记录造成的,于是在主节点中找到服务器的这条记录,运行如下命令。

echo "|1|WMPpuYJirJFjJUzdkyVI4CshW........9A=">known_hosts

问题终于得到解决。

参考资料:

  • https://jenkins.io/doc/pipeline/steps/credentials-binding/
  • google 帖子
  • Credentials Binding Plugin

你可能感兴趣的:(Jenkins pipeline 之 scp)