Gitlab CI / Docker: ssh-add постоянно просит пароль - PullRequest
0 голосов
/ 02 марта 2019

В настоящее время я пытаюсь запустить скрипт на удаленном компьютере из контейнера Gitlab CI / CD Docker.Задание настроено следующим образом:

stages:
  - deploy

image: maven:3.3.9

server-deploy:
  stage: deploy
  allow_failure: false
  script:
    ## Install ssh agent
    - apt update && apt install openssh-client -y
    - eval $(ssh-agent -s)
    ## Create SSH key file
    - "echo \"-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACByjJBGT21Arna/pirWVXQqGAr/aszqQ5HzvrA2MzVDZAAAAJiGKEEKhihB
CgAAAAtzc2gtZWQyNTUxOQAAACByjJBGT21Arna/pirWVXQqGAr/aszqQ5HzvrA2MzVDZA
AAAEAKbObQgJGXbrKQt4wdCy3YQfpVBqkT5RNEt2IYU5pv3HKMkEZPbUCudr+mKtZVdCoY
Cv9qzOpDkfO+sDYzNUNkAAAAFHN2ZW5AREVTS1RPUC0xTjVKUjRSAQ==
-----END OPENSSH PRIVATE KEY-----\" > deploy-key"
    ## Fix permissions on key file and .ssh folder
    - chmod 700 deploy-key; mkdir -p ~/.ssh; chmod 700 ~/.ssh
    ## Import SSH key
    - ssh-add -k deploy-key
    ## Make sure that ssh will trust the new host, instead of asking
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    ## Run script on the remote server
    - ssh -t user@255.255.255.255 "./deploy-master"

(ключ SSH является только временным, специально сгенерированным для вопроса SO). Теперь задание завершается сбоем, когда оно приходит к «ssh-add -k deploy-key », запрашивая фразу-пароль, как таковую:

$ ssh-add -k deploy-key
Enter passphrase for deploy-key: ERROR: Job failed: exit code 1

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

Итак, мой вопрос: как я могу запретить ssh-add запрашивать пароль?И мне также весьма любопытно, почему это происходит только в контейнере Gitlab CI Docker, а не на моем собственном ПК.

Заранее спасибо!

1 Ответ

0 голосов
/ 02 марта 2019

Хорошо, у меня все получилось.Оказывается, ssh-add очень требователен к формату файла и особенно к новым строкам.Новые строки в .gitlab-ci.yml не передаются непосредственно в команду, и поэтому ключ оказался одной большой строкой.

Вот как я решил это:

- echo -----BEGIN OPENSSH PRIVATE KEY----- >> deploy-key
- echo b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW >> deploy-key
- echo QyNTUxOQAAACByjJBGT21Arna/pirWVXQqGAr/aszqQ5HzvrA2MzVDZAAAAJiGKEEKhihB >> deploy-key
- echo CgAAAAtzc2gtZWQyNTUxOQAAACByjJBGT21Arna/pirWVXQqGAr/aszqQ5HzvrA2MzVDZA >> deploy-key
- echo AAAEAKbObQgJGXbrKQt4wdCy3YQfpVBqkT5RNEt2IYU5pv3HKMkEZPbUCudr+mKtZVdCoY >> deploy-key
- echo Cv9qzOpDkfO+sDYzNUNkAAAAFHN2ZW5AREVTS1RPUC0xTjVKUjRSAQ== >> deploy-key
- echo -----END OPENSSH PRIVATE KEY----- >> deploy-key

Таким образом автоматически создаются новые строки в файле, и теперь ssh-add выбирает формат.

...