GITLAB CI Ошибка загрузки ключа "/ dev / fd / 63": неверный формат ОШИБКА: сбой задания: код выхода 1 - PullRequest
1 голос
/ 18 марта 2019

Вот мой код giltlab-ci.yml:

 before_script:
  ##
  ## Install ssh-agent if not already installed, it is required by Docker.
  ## (change apt-get to yum if you use an RPM-based image)
  ##
  - '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
  ## We're using tr to fix line endings which makes ed25519 keys work
  ## without extra base64 encoding.
  ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
  ##
  - mkdir -p ~/.ssh
  #- echo -n "$PROJECT_SSH_KEY" | ssh-add - >/dev/null
  - echo "$PROJECT_SSH_KEY"
  - ssh-add <(echo "$PROJECT_SSH_KEY")
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
  - git config --global user.email "walid.mansia@gmail.com"
  - git config --global user.name "Walid Mansia"

  ##
  ## Create the SSH directory and give it the right permissions
  ##
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh

  ##
  ## Optionally, if you will be using any Git commands, set the user name and
  ## and email.
  ##
  #- git config --global user.email "user@example.com"
  #- git config --global user.name "User name"

Я вытащил это на место

Работает с gitlab-runner 11.8.0 (4745a6f3) на Allence-Tunisie-docker-runner sH47eTgb Использование Docker executor с изображением ntfactory / ci-tool: 0.0.2 ... Вытягивание образа docker ntfactory / ci-tool: 0.0.2 ... Использование образа docker sha256: 7fe7b170806f6846271eec23b41c4f79202777f62c0d0321c1741717417432174321743217432174321743217417: 0.0.2 ... Запуск на runner-sH47eTgb-project-11060727-concurrent-0 через a732493b4b94 ... Клонирование репозитория ... Клонирование в '/ builds / allence-tunisie / e-creation' ... Проверка 0a6b48efas feat / gitlab-ci ... Пропуск настройки подмодулей Git Проверка кэша по умолчанию ... URL не указан, кэш не будет загружен с сервера общего кэша.Вместо этого будет извлечена локальная версия кэша.Успешно извлеченный кеш $, который ssh-agent ||(apt-get update -y && apt-get install openssh-client -y) / usr / bin / ssh-agent $ eval $ (ssh-agent -s) Агент pid 12 $ mkdir -p ~ / .ssh $ echo "$ SSH_PRIVATE_KEY "|tr -d '\ r' |ssh-add -> / dev / null Ошибка загрузки ключа "(stdin)": неверный формат ОШИБКА: задание не выполнено: код выхода 1

, хотя я пытался - выведите «$ SSH_PRIVATE_KEY» |tr -d '\ r' |ssh-add -> / dev / null я получаю эту ошибку

Ошибка загрузки ключа "(stdin)": неверный формат

1 Ответ

4 голосов
/ 04 апреля 2019

Эта ошибка возникает, когда закрытый ключ в $ SSH_PRIVATE_KEY искажен, вы можете легко проверить его локально, если добавите в него несколько случайных символов. В частности, это происходит в Travis-CI, когда вы просто копируете и вставляете закрытый ключ в переменную SSH_PRIVATE_KEY в онлайн-форме. Это связано с символами новой строки после и перед блоками ----- BEGIN RSA PRIVATE KEY -----, ----- END RSA PRIVATE KEY -----. По этой причине я использую кодировку base64, чтобы убедиться, что ключ отформатирован правильно.

попробуйте это:

  • Кодирование вашего личного ключа RSA

    кошка my_private_key | base64 -w0

  • Добавьте строку base64 в переменные вашего проекта.

  • Используйте это в своем .gitlab-ci.yml

ssh-add <(echo "$ SSH_PRIVATE_KEY" | base64 -d) </p>

...