Вызов команды SSH из Jenkins

Jenkins продолжает использовать пользователя "jenkins" по умолчанию при выполнении сборок. Для моей сборки требуется несколько вызовов SSH. Однако эти SSH-вызовы терпят неудачу с исключениями проверки Хоста, потому что я не смог подключиться, разместите открытый ключ для этого пользователя на целевом сервере.

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

любые предложения по либо;

  1. способ заставить Дженкинс пользователя я определяю
  2. способ включить SSH для пользователя Jenkins по умолчанию
  3. Fetch пароль для пользователя по умолчанию "Дженкинс"

В идеале я хотел бы быть в состоянии сделать оба любую помощь очень ценится.

решение: я смог получить доступ к пользователю Jenkins по умолчанию с SSH-запросом с целевого сервера. Как только я вошел в систему как пользователь jenkins, я смог создать открытые / частные ключи RSA, которые затем разрешили свободный доступ к паролю между серверами

4 ответов


пользователь по умолчанию "Дженкинс" - это системный пользователь, выполняющий экземпляр jenkins (master или slave). В зависимости от вашей установки этот пользователь может быть создан либо сценариями установки (deb/rpm/pkg и т. д.), либо вручную вашим администратором. Его можно назвать или не назвать "Дженкинс".

чтобы узнать, под каким пользователем работает ваш экземпляр jenkins, откройте http:/ / $JENKINS_SERVER / systemInfo, доступный в меню Управление Jenkins.

там вы найдете свой пользователь.дом и пользователь.имя. Например. в моем случае на Mac OS X master:

user.home   /Users/Shared/Jenkins/Home/
user.name   jenkins

Как только у вас будет эта информация, вам нужно будет войти на этот сервер jenkins как пользователь, запускающий jenkins и ssh на эти удаленные серверы, чтобы принять отпечатки ssh.

альтернативой (которую я никогда не пробовал) было бы использовать пользовательское задание Дженкинса, чтобы принять эти отпечатки пальцев, например, выполнив следующую команду в задаче сборки SSH:

ssh -o "StrictHostKeyChecking no" your_remote_server

этот последний совет конечно, совершенно неприемлемо с точки зрения чистой безопасности:)


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


таким образом, можно сделать "задание", которое записывает ключи хоста как константу, например:

echo "....." > ~/.ssh/known_hosts

просто заполните точками из ssh-keyscan -t rsa {ip}, после проверки его.


это правильно, задания конвейера обычно используют пользователя jenkins, что означает, что для этой учетной записи должен быть предоставлен доступ SSH для работы в заданиях конвейера. У людей есть всевозможные сложные среды сборки, поэтому это кажется справедливым требованием.

как указано в одном из ответов, каждая отдельная конфигурация может быть разной, поэтому проверьте в разделе "системная информация" или аналогично, в "Управление Дженкинсом" в веб-интерфейсе. Должно быть user.home и a user.name для домашний каталог и имя пользователя соответственно. На моей установке CentOS это "/var/lib/ jenkins / " и "jenkins".

первое, что нужно сделать, это получить доступ к оболочке как пользователь Дженкинс в нашем случае. Поскольку это автоматически сгенерированная учетная запись службы, оболочка по умолчанию не включена. Предполагая, что вы можете войти в систему как root или желательно какой-либо другой пользователь (в этом случае вы должны добавить sudo) переключитесь на Дженкинса следующим образом:

su -s /bin/bash jenkins

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

whoami
echo $HOME

если они не соответствуют тому, что вы видите в конфигурации, не продолжайте.

пока все хорошо, давайте проверим, какие ключи у нас уже есть:

ls -lah ~/.ssh

могут быть только ключи, созданные с именем хоста. Смотрите, если вы можете использовать их:

ssh-copy-id user@host_ip_address

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

ssh-keygen

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

это хорошая идея, чтобы проверить его с чем-то вроде

ssh user@host_ip_address ls

если он работает, так должен ssh, scp, rsync и т. д. в заданий Jenkins. В противном случае, проверьте вывод консоли, чтобы увидеть сообщения об ошибках и попробовать эти команды в консоли, как это сделано выше.