В Jenkins Pipeline, зачем нужны два удостоверения одновременно? - PullRequest
0 голосов
/ 16 мая 2018

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

sshagent (credentials: ['deploy-dev']) {
    sh 'ssh -o StrictHostKeyChecking=no -l cloudbees 192.168.1.106 uname -a'
  }

Но в примере я вижу, что они упоминают учетные данные от Jenkins и в команде снова используют login: "-l cloudbees".

Итак, мой вопрос следующий: какие "учетные данные: ['deploy-dev']" используются для тогда?

1 Ответ

0 голосов
/ 21 мая 2018

Ну, отвечая на мой вопрос: -)

Клиенту SSH требуются учетные данные для подключения к удаленному демону SSH. Как правило, это либо пользователь / пароль, либо закрытый SSH-ключ. Что если у вас нет ни одного из них во время выполнения?

Вот что делает Jenkins Pipeline:

  1. Запускает ssh-agent на подчиненном узле Jenkins. Это демон, который прослушивание Unix-сокета (этот сокет хранится в $ SSH_AUTH_SOCK переменная).
  2. Затем он добавляет (ssh-add) эти учетные данные ('deploy-dev') запущенному ssh-агенту. В следующий раз, когда вы запустите команду (в нашем на случай, если это "ssh -l cloudbees 192.168.1.106" SSH-ключ от ssh-agent

Так что в конечном итоге он подключится как пользовательские облачные пчелы, но ключ будет получен из ssh-agent. Если вы используете простые учетные данные - может быть, -l cloudbees вообще не нужен. Не уверен.

Некоторые полезные ссылки к вашим услугам.

...