SCP命令无法复制"主机密钥验证失败。"

时间:2018-04-30 17:28:50

标签: amazon-web-services jenkins jenkins-pipeline

您好我是Jenkins管道新手,我正在尝试将文件从一台AWS Jenkins服务器复制到另一台AWS服务器。两者都是Ubuntu服务器。当我在Jenkins服务器的命令行中运行scp命令时,它将文件从Jenkins服务器复制到目标服务器,但是在Jenkins管道中它显示"主机密钥验证失败"。我在做什么错误?

管道阶段是

  stage('Deliver') {
        steps {
            sh 'scp -i /home/ubuntu/connec/new_one.pem **/target/*.jar ubuntu@00.00.000.00:/home/ubuntu'
        }
    }

错误是

 scp -i /home/ubuntu/connec/new_one.pem **/target/*.jar ubuntu@00.000.00.00:/home/ubuntu

 Host key verification failed.

 lost connection

 script returned exit code 1

****解决了我发布的答案我做了什么。如果我错了,请建议。谢谢****

2 个答案:

答案 0 :(得分:3)

scp -v 你是这里的朋友。这是scp的详细标志。

我怀疑你在盒子上测试的用户和Jenkins运行的用户是两个不同的用户,因此Jenkins用户从未发生过初始密钥交换,而Jenkins是无头的,所以它无法输入是接受主机标识密钥。

如果是这种情况,你可以使用scp的 -o“StrictHostKeyChecking = no”选项自动接受并允许你通过这里。

将-v标志添加到scp命令中,我打赌我们可以看到输出中发生了什么。

以下是scp

的手册页

https://linux.die.net/man/1/scp

祝你好运

答案 1 :(得分:2)

我发现了我所犯的一切错误。在这种情况下。因为我是新手,我不知道很多事情。所以我想提一下我完成这一步所完成的步骤。如果我正在做的任何事情是不正确的或可以以不同的方式完成,请建议。感谢。

第一次是Darrell在答案中提到我在我的SCP命令中添加了-o“StrictHostKeyChecking = no”,就像这样

   scp -v -o StrictHostKeyChecking=no -i /home/ubuntu/connec/new_one.pem **/target/*.jar ubuntu@00.00.00.00:/home/ubuntu

我仍然面临错误

    Load key "/home/ubuntu/connec/new_one.pem": Permission denied

    debug1: No more authentication methods to try.

在搜索google和stackoverflow中的错误后,我发现Jenkins用户的权限问题。当我在终端提交命令时,我使用的是ubuntu用户,但jenkin将用户称为“jenkins”。所以我在我的scp命令中添加了2个更改sudo

    sudo scp -v -o StrictHostKeyChecking=no -i /home/ubuntu/connec/new_one.pem target/*.jar ubuntu@00.00.00.00:/home/ubuntu

然后我遇到“Jenkins”用户没有权限运行sudo命令所以我编辑了文件名“VISUDO”

 sudo visudo

并在最后添加了行

 jenkins ALL=(ALL) NOPASSWD: ALL

之后,当我运行管道时,它完成并复制了文件...... yaayyy。

我仍然想知道我做得对吗?有其他方式吗?