Jenkins pipeline 之 scp

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

[public] Running shell script
+ scp -i **** apidoc.tar ubuntu@172.26.136.38:/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 ubuntu@172.26.136.38:/home/ubuntu/mypage-apidoc/"
              sh "ssh -i ${pem} ubuntu@172.26.136.38 \"tar -xvf /home/ubuntu/mypage-apidoc/apidoc.tar -C /home/ubuntu/mypage-apidoc/\""
            }

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

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

问题终于得到解决。

参考资料:

    原文作者:思_路
    原文地址: https://www.jianshu.com/p/e6aba9ac276e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞