Вызов команды SSH из Jenkins
Jenkins продолжает использовать пользователя "jenkins" по умолчанию при выполнении сборок. Для моей сборки требуется несколько вызовов SSH. Однако эти SSH-вызовы терпят неудачу с исключениями проверки Хоста, потому что я не смог подключиться, разместите открытый ключ для этого пользователя на целевом сервере.
Я не знаю, где настроен пользователь по умолчанию "jenkins", и поэтому не могу создать необходимый открытый ключ для размещения на целевом сервере.
любые предложения по либо;
- способ заставить Дженкинс пользователя я определяю
- способ включить SSH для пользователя Jenkins по умолчанию
- 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, выполняющие удаленные команды:
- опубликовать через SSH - выполнение команд SSH или передача файлов через SCP / SFTP.
- SSH - выполнение команд 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. В противном случае, проверьте вывод консоли, чтобы увидеть сообщения об ошибках и попробовать эти команды в консоли, как это сделано выше.