2017-01-21 12 views
0

Я работаю над непрерывной интеграцией с Travis CI. Это моя конфигурация:travis-ci - ssh-add, запрашивающий мою кодовую фразу

before_install: 
    - echo -e "Host *\n\tStrictHostKeyChecking no\n" > ~/.ssh/config 
    - echo -e $id_rsa.pub > ~/.ssh/id_rsa.pub 
    - echo -e $id_rsa > ~/.ssh/id_rsa 
    - sudo chmod 600 ~/.ssh/* 
    - sudo chmod 644 ~/.ssh/config 
    - eval `ssh-agent -s` 
    - ssh-add ~/.ssh/id_rsa 
    ... 

$ ssh-add ~/.ssh/id_rsa 
Enter passphrase for /home/travis/.ssh/id_rsa: 

На этапе SSH-добавить, что спросить меня ключевая фраза, и это остановить развертывание. Я тестировал с другим ключом ssh без кодовой фразы, но это не исправляет мою проблему.

Я тестировал множество решений, таких как yes $MY_PASSWORD | ssh-add ~/.ssh/id_rsa или echo "$MY_PASSWORD" | ssh-add ~/.ssh/id_rsa, но это не работает.

Я добавил к моему .ssh/конфигурации (вы можете увидеть его в моей конфигурации):

Host * 
    StrictHostKeyChecking no 

это не должен делать это не спрашивайте меня ключевую фразу?

Возможно, у кого-то есть идея? Спасибо :)

+1

* «' StrictHostKeyChecking no' ... не предполагается ли это, чтобы он не просил меня кодовую фразу? »* - Нет.« StrictHostKeyChecking »- это эквивалент SSH для закрепления открытого ключа в других протоколах, таких как HTTPS. Он не имеет ничего общего с удаленными учетными данными. – jww

ответ

0

Вы используете зашифрованный закрытый ключ (что хорошо), но ему нужна кодовая фраза (что плохо для скриптов). Есть несколько возможностей, вы можете продолжить:

  • Удалить ключевую фразу из ключа и использовать его в незашифрованном виде (менее безопасный)

    ssh-keygen -p -P "old_passphrase" -N "" -f ~/.ssh/id_rsa 
    
  • Используйте sshpass инструмент, чтобы разблокировать ключ (хранение ключевой фразы рядом ключ в сценарии в основном побеждает безопасность зашифрованного ключа)

    sshpass -p passphrase ssh-add ~/.ssh/id_rsa 
    
+0

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

+0

Пожалуйста, ясно объясните, что вы сделали, какие изменения вы внесли в вышеупомянутый «скрипт», как вы создали старый ключ или новый. – Jakuje

+0

пусть забудет мой новый ключ, я использую на данный момент только старый, который является моим текущим локальным ключом на моем персональном компьютере. Я скопировал содержимое .ssh/id_rsa и .ssh/id_rsa.pub в две переменные среды на панели настроек traviscc.org ($ id_rsa и $ id_rsa.pub). Я сделал то же самое с моей кодовой фразой в $ passphrase. в скрипте, который я опубликовал (часть before_script, перед командой ss-add), я добавил «sshpass -p $ passphrase ssh-add ~/.ssh/id_rsa». Он говорит мне «плохой пароль». Я пробовал ту же команду на локальном компьютере на своем компьютере без переменных окружения, и он работает с теми же ключами. –

0

Я решил проблему. У меня была другая проблема в базовом использовании переменных окружения и эха.

  • Мои имена переменных среды не были хорошими. «$ id_rsa.pub» в travis интерпретировался $ id_rsa. «.pub», поэтому он добавил некоторые неправильные символы в мой контент. Я переименовал его в id_rsa_pub.

  • Я забыл преобразовать «" в "\" и новые строки с помощью "\ n", а с помощью travis и его переменных окружения вы должны написать «\\ n» вместо «\ n».

Моя проблема частично связана с плохими файлами ssh и потому, что я использую ключ rsa с паролем. В моем случае не важно иметь пароль, поэтому я удалил его. Для этого я использую ответ jakuje. Теперь мой ssh-ключ установлен правильно в каждой сборке.

Благодарим за помощь!