Назад | Перейти на главную страницу

GitLab CI не может подключиться к удаленному серверу

У меня есть следующие .gitlab-ci.yml файл, который направлен на развертывание моего главного репозитория GitLab путем клонирования его в test каталог на определенном сервере.

image: ubuntu:latest
before_script:
  - apt-get install -y
  - apt-get update -y
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y && apt-get install git -y )'
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null ## /dev/null = trou noir
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh
  - ssh-keyscan charrier.alwaysdata.net >> ~/.ssh/known_hosts
  - chmod 644 ~/.ssh/known_hosts
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

deploy:
  script:
    - ssh -o StrictHostKeyChecking=no -vT user_name@xxx.xx.xxx.xxx "cd test && git clone git@gitlab-myweb.com:repo_group/repo.git"
  only:
    - master

В $SSH_PRIVATE_KEY закрытый ключ, сгенерированный при входе в систему как user_name в xxx.xx.xxx.xxx, где я пытаюсь клонировать свое репо.

После запуска ci, Я получаю эту ошибку:

user_name@xxx.xx.xxx.xxx: Permission denied (publickey).
ERROR: Job failed: exit code 1

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

Можете ли вы помочь мне найти мою ошибку?

Причина в том, что я не сделал двух вещей:

  1. Добавьте открытый ключ сервера к авторизованным ключам сервера. Внутри сервера это делается простым запуском этой строки: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  2. Я не добавлял открытый ключ сервера в GitLab открытые ключи профиля. Это делается путем копирования содержимого cat ~/.ssh/id_rsa.pub и вставив их в https://yourgitlabwebsite.com/profile/keys