2014-09-04 2 views
1

У вас есть вопрос к build masters. :)Windows/Linux Автоматический обмен ключами

У меня есть build box, который я использую для создания непрерывных сборок, а также для запуска nightly unit tests. Я использую Jenkins, чтобы выполнить скрипты build/unit test, которые работают в окне окна, потому что наш компилятор основан на Windows.

В одном из наших корпоративных решений используется python код с rabbitmq для обмена сообщениями для синхронизации конкретных таблиц базы данных по неисправной сети. У меня есть модульные тесты, чтобы проверить, что обновления происходят правильно.

Для того, чтобы тестировать обновления python, мне нужно остановить некоторые службы, запущенные в моем Linux-окне, а затем перезапустить их после обновления кода python. Я устанавливаю обмен ключами между окном и полем Linux, поэтому мне не нужно вводить пароль в пакетный скрипт. Когда я удаляюсь в окно окна, я могу успешно запустить командный файл, который использует команды plink, которые полагаются на обмен ключами и puttypageant (который работает в фоновом режиме). например Я использую plink для выполнения команд в окне linux из командной строки в моем командном файле. Однако, когда я пытаюсь запустить командный файл из Jenkins, командный файл работает неправильно, потому что ему предлагается пароль ssh при попытке выполнить команды plink.

Я считаю, что мой текущий вопрос можно резюмировать 2 вопросов, которые я надеюсь, что может быть проверено и, надеюсь, исправлены:

  1. Я думаю, что Дженкинс может быть запущен в качестве другого пользователя или с использованием различных учетных систем, так его невозможно подключить, как вошедший в систему пользователь. Если это так, что мне нужно сделать, чтобы заставить его так, чтобы Jenkin мог нормально выполнять команды plink, не запрашивая пароль.
  2. Пейнт выглядит так, как будто он должен вводить пароль каждый раз, когда компьютер перезагружается. В googles показано, как включить запуск страницы в начало, поэтому вы получите запрос при первом входе в систему, но мне нужно, чтобы это было автоматически, например, как я могу на linux-боксах. Если Windows перезагрузится из-за обновления Windows, тесты модуля завершились неудачно, так как они не смогут подключиться к серверу linux. Конечно, это происходит один раз в неделю, но в течение года это будет очень неприятно.

Любые мысли или идеи о том, что я могу сделать для решения вышеуказанных 2 вопросов, будут весьма признательны. Если есть хорошая альтернатива шпатлевке для автоматического обмена ключами между окнами и linux, мне также будет интересно услышать (я предпочел бы держаться подальше от Cygwin с OpenSSH, но мог бы спуститься по этому маршруту, t быть выпрямленным).

ответ

1

Я использую plink на моей машине Windows, Дженкинс общаться с Linux на ежедневной основе, нет никаких проблем с ним ,

Как вы теоретизировали, Jenkins работает под своим собственным пользователем (по умолчанию я использую Windows, SYSTEM), который отличается от вашего входа в систему, даже если вы входите в систему как Administrator.Ваш ключ аутентификации хранится в вашем (Administrator или иным образом) профиль каталога

Что вам нужно сделать, это использовать Pageant экспортировать ключ в ppk файл, а затем указать путь к этому ppk файл с plink:

plink -i "C:\path\to\id.ppk"

+0

Я обновил свои скрипты, чтобы ссылаться на .ppk, но все же получаю запрос на кодовую фразу ... 'Passphrase for key 'jenkins to 10.2 обмен ключами ": Потерянное соединение' Мысли? (Я подал в суд на ssh-rsa 2048), который работает, когда я запускаю непосредственно с машины, но не через скрипт ... если я удалю ключ из конкурсного листа, тогда запустите файл bat, он даст ту же подсказку –

+0

Я понял это , Мне пришлось создать новый ppk с кодовой фразой, а затем я смог использовать этот пост для публикации. Спасибо. –

0

Похоже, есть более простой способ сделать то, что я пытаюсь сделать, плагин Дженкина в https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin

+0

Это похоже на хорошую альтернативу, но у меня была следующая проблема, и я не смог ее решить: http://stackoverflow.com/questions/22345483/jenkins-publish-over-ssh-authentification-failed-with -private-key, оставляя сообщение, если у них есть исправление по дороге. –

+0

Проблема с публикацией над плагином SSH (помимо любых технических проблем, которые могут возникнуть), заключается в том, что вам необходимо предварительно настроить все серверы в глобальной конфигурации. Если у вас есть среда, в которой у вас есть произвольное количество серверов для подключения, это действительно не работает. – Slav

Смежные вопросы