2016-09-07 3 views
0

Большинство репозиториев моих частных проектов размещаются в частном репозитории на gitlab.com (размещенном решении, а не частном сервере gitlab). Сайты размещены на цифровом VPS.Gitlab.com CI не может подключиться к серверу SSH

Я хочу использовать gitlab CI для каждой фиксации на ветке develop, автоматически развернутой на тестовом сервере. Поскольку у меня уже есть клон репозитория на этом тестовом сервере, самый простой способ автоматического развертывания, похоже, подключен gitlab-ci к серверу ssh и запускает git pull.

gitlab-ci.yml У меня есть (ssh before_script скопировано из http://docs.gitlab.com/ce/ci/ssh_keys/README.html).

deploy to test: 
    environment: test 
    only: 
    - develop 
    before_script: 
    # Install ssh-agent if not already installed, it is required by Docker. 
    # (change apt-get to yum if you use a CentOS-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 ssh key stored in SSH_PRIVATE_KEY variable to the agent store 
    - ssh-add <(echo "$SSH_PRIVATE_KEY") 

    # disable host key checking (NOTE: makes you susceptible to man-in-the-middle attacks) 
    # WARNING: use only in docker container, if you use it with shell you will overwrite your user's ssh config 
    - mkdir -p ~/.ssh 
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config 

    script: 
    # Try and connect to the test server 
    - ssh [myname]@[mydomain.com] "cd /var/www/test.[projectname].com/ && git pull" 

В результате фиксации на develop в gitlab трубопроводов:

$ ssh [myname]@[mydomain.com] "cd /var/www/test.[projectname].com/ && git pull" 
Warning: Permanently added '[mydomain.com],[255.255.255.255]' (ECDSA) to the list of known hosts. 

Permission denied, please try again. 

Permission denied, please try again. 

Permission denied (publickey,password). 

ERROR: Build failed: exit code 1 

У меня есть секретный ключ моего локального пользователя на моем ноутбуке добавляется к SSH_PRIVATE_KEY переменной на gitlab. Закрытый ключ должен работать, так как я могу подключиться к серверу с моего ноутбука, не предоставляя пароль.

У кого-нибудь есть это, как можно подключиться к серверу ssh через рабочий стол gitlab.com?

+0

Hi @vityrus, вам удалось подключиться с помощью SSH и выполните команда на удаленном хосте? – BigDong

ответ

0

AFAIK, вы не можете сделать это:

# add ssh key stored in SSH_PRIVATE_KEY variable to the agent store 
- ssh-add <(echo "$SSH_PRIVATE_KEY") 

ssh-agent не получает ключевой контекст, ни FD. Вы должны хранить ключ в некотором временном файле, а затем добавить его к агенту (и, возможно, удалить файл, если он больше не нужен):

# add ssh key stored in SSH_PRIVATE_KEY variable to the agent store 
- echo "$SSH_PRIVATE_KEY" > key 
- chmod 600 key 
- ssh-add key 
- rm key 
+0

Спасибо за предложение Jakuje! Впервые попробовал ваш реальный код: ' @ ВНИМАНИЕ! НЕПРЕРЫВНЫЙ ЧАЙНЫЙ ФАЙЛ! @ Разрешения 0644 для «ключа» слишком открыты. Рекомендуется, чтобы ваши файлы личных ключей НЕ были доступны другим пользователям. Этот закрытый ключ будет игнорироваться. ' – vitrus

+0

Тогда вам, вероятно, нужно убедиться, что у него есть соответствующие разрешения (' chmod 600 key' после написания). – Jakuje

+0

Я тоже сделал это (извините, проблема с комментариями, код публикации не имеет многострочного кода). Он дал точно такой же результат, как и моя первоначальная попытка: 'Permission denied, попробуйте еще раз. 'X 2 – vitrus

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