
Я пытаюсь сгенерировать пару ключей, чтобы разрешить серверу jenkins подключаться по ssh к другому (через плагин ssh-steps, если это имеет значение). Открытый ключ будет входить в авторизованные ключи на целевом хосте. Я понимаю, что это должно быть просто, что-то вроде:
sudo su - [jenkins user]
ssh-keygen -t rsa -b 4096 -C jenkinsuser@jenkinshost
Затем сохраните ключ /home/jenkinsuser/.ssh/id_rsa
и получите открытый ключ, чтобы добавить его к авторизованным ключам на хосте.
Я вижу, что это sudo su - jenkinsuser
не работает и /etc/passwd
показывает, что оболочка для этого пользователя настроена на /bin/false
, чтобы отключить вход в систему, насколько я понимаю.
Имея это в виду, я ищу наилучшую практику по назначению места для ключа SSH, поскольку у пользователя отключен вход в систему и, следовательно, нет домашнего каталога.
решение1
У Jenkins есть встроенныйхранилище учетных данныхчто является наиболее подходящим местом для хранения ключей SSH, используемых заданиями Jenkins. Хранилище учетных данных предназначено для хранения различных видов учетных данных, используемых заданиями Jenkins, таких как ключи SSH, имена пользователей/пароли и ключи API. Хранилище учетных данных позволяет делегировать доступ и гарантирует, что конфиденциальные учетные данные не будут записаны в выходные данные задания.
решение2
Для запуска скрипта генерации ключей вам не нужны права root.
Я обычно храню все свои ключи в /etc/ssh
. Это вне домашнего каталога и я думаю, /etc
что это самый точный каталог для этого.