在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
问题终于得到解决。
参考资料: