2017-01-05 2 views
2

Я хочу подключиться к серверу через SSH с открытым ключом, когда трубопровод GitLab успешно завершен.Как подключиться к серверу taget через SSH с помощью ключа из конвейера GitLab?

Как я вижу, мне нужно сгенерировать ключ с ssh-keygen на стороне GitLab и добавить его на сервер, где я хочу подключиться.

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

Я полагаю, что это обычный сценарий для подключения от CI-сборки к удаленному SSH с помощью ключа.

Как я могу заставить его работать?

ответ

2

Вы можете запускать ssh-keygen из любого места, где хотите, до тех пор, пока вы используете соответствующие ключи на соответствующем сервере.

Вот что вам нужно:

  • Генерация пары ключей
  • Скопируйте частный ключ к переменной gitlab CI (назовем его SSH_PRIVATE_KEY)
  • Скопируйте общественности ключ к сервер gitlab подключится и добавит его в ваш файл ~/.ssh/authorized_keys.
  • Сообщите вашему конвейеру CI использовать закрытый ключ, который хранится в G itlab CI переменная

Для того, чтобы сделать этот последний шаг, просто добавьте следующую строку в ваш .gitlab-ci.yml в сценарии или before_script части задания интереса:

- 'which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)' 
# Run ssh-agent (inside the build environment) 
- eval $(ssh-agent -s) 
# Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store 
- ssh-add <(echo "$SSH_PRIVATE_KEY") 
- mkdir -p ~/.ssh 
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' 

Затем сделать ваш SSH соединение и вуаля !

EDIT: Я не мог вспомнить, где я нашел эту информацию в первый раз, но здесь это: https://docs.gitlab.com/ee/ci/ssh_keys/README.html

+0

Может быть глупый вопрос, но где сгенерировать ключи SSH? Я предполагаю, что вам нужно сгенерировать их на целевом сервере. –

+1

Как упоминалось в ответе, ключи SSH могут генерироваться в любом месте, пока вы копируете закрытый ключ в переменную CI Gitlab и копируете файл открытого ключа на целевой сервер – Jawad

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