Сбой подключения к экземпляру EC2 из Jenkins: сбой проверки ключа хоста - PullRequest
0 голосов
/ 03 июня 2018

Я впервые пытаюсь автоматизировать развертывание с Jenkins на экземпляре EC2.

Я установил tomcat8 в экземпляре EC2 и изменил разрешения для папки tomcat8/webapps на 777 ($ chmod 777 webapps).

.ssh из EC2 находится в known_hosts file.

Я могу подключиться и скопировать файл .war в папку сервера, используя scp из моей консоли, но он не работает во время автоматизации.

$ scp -i /Users/Shared/Jenkins/aws.pem /Users/Shared/Jenkins/Home/jobs/fully-automated/builds/28/archive/webapp/target/webapp.war ec2-user@35.158.118.56:/var/lib/tomcat8/webapps

== copies the *.war file to tomcat8/webapps ==

В Jenkins я получаю:

[Deploy to Staging] + scp -i /Users/Shared/Jenkins/aws.pem /Users/Shared/Jenkins/Home/jobs/fully-automated/builds/28/archive/webapp/target/webapp.war ec2-user@35.158.118.56:/var/lib/tomcat8/webapps
[Deploy to Staging] Host key verification failed.
[Deploy to Staging] lost connection

Команда из консоли и из файла Groovy Jenkins точно такая же.Почему это будет работать с моей машины, а не с Jenkins?

Jenkinsfile:

pipeline {
  agent any

  tools {
    maven 'localMaven'
  }

  parameters {
    string(name: 'production', defaultValue: '54.93.78.130', description: 'Staging server')
    string(name: 'staging', defaultValue: '35.158.118.56', description: 'Production server')
  }

  triggers {
    pollSCM('* * * * *')
  }

  stages {
    stage('Build') {
      steps {
        sh 'mvn clean package'
      }
      post {
        success {
          echo 'Now Archiving...'
          archiveArtifacts artifacts: '**/target/*.war'
        }
      }
    }

    stage('Deployments') {
      parallel {
        stage('Deploy to Staging') {
          steps {
            sh "scp -i /Users/Shared/Jenkins/aws.pem /Users/Shared/Jenkins/Home/jobs/fully-automated/builds/28/archive/webapp/target/*.war ec2-user@${params.staging}:/var/lib/tomcat8/webapps"
          }
        }

        stage('Deploy to Production') {
          steps {
            sh "scp -i /Users/Shared/Jenkins/aws.pem /Users/Shared/Jenkins/Home/jobs/fully-automated/builds/28/archive/webapp/target/*.war ec2-user@${params.production}:/var/lib/tomcat8/webapps"
          }
        }
      }
    } 
  }
}

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 04 июня 2018

Это распространенная ошибка многих людей.Вы дали разрешение своему «ИМЯ ПОЛЬЗОВАТЕЛЯ» на доступ к EC2, а не к пользователю «JENKINS».Просто сделайте то же самое, но на этот раз сделайте это для пользователя Jenkins.

У Дженкинса есть собственный пользователь с именем "jenkins", которого вы можете наблюдать в папке пользователей, создать здесь ключ ssh и передать его в EC2, и все должно работать нормально:)

Для подтверждения простоSSH на сервер, используя ваше имя пользователя и попробуйте с именем пользователя Jenkins, он не будет работать, пока вы не сделаете это вышеупомянутые изменения

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...