Команде SCP не удается скопировать «Ошибка проверки ключа хоста». - PullRequest
0 голосов
/ 30 апреля 2018

Здравствуйте, я новичок в конвейере Jenkins и пытаюсь скопировать файл с одного сервера AWS Jenkins на другой сервер AWS. Оба являются серверами Ubuntu. Когда я запускаю команду scp в командной строке на сервере Jenkins, он копирует файл с сервера 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 голосов
/ 01 мая 2018

Я нашел все ошибки, сделанные мной. в этом случае. поскольку я новичок в этом, я не знаю многих вещей. поэтому я хотел бы упомянуть шаги, которые все я сделал, чтобы завершить этот шаг. если что-то я делаю неправильно или что можно сделать по-другому, пожалуйста, предложите. Спасибо.

1-й был, как Даррелл упомянул в ответах, я добавил -o "StrictHostKeyChecking = no" в моей команде SCP, как это было

   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, но Дженкин использует пользователя как «Дженкинс». так что я сделал 2 изменения, добавил sudo в моей команде scp

    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.

Тем не менее мне интересно, я делаю правильно? есть другой способ?

0 голосов
/ 30 апреля 2018

scp -v это ваш друг здесь. Это подробный флаг для scp.

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

В этом случае вы можете использовать параметр -o "StrictHostKeyChecking = no" с scp для автоматического принятия и пропуска здесь.

Добавьте флаг -v к вашей команде scp, и я уверен, что мы можем видеть, что происходит в выводе.

Вот справочная страница для scp

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

Удачи

...