Capistrano не может получить репозиторий Stash с помощью SSH

Я следовал следующей процедуре:

  • Создал SSH-ключ;
  • Включен SSH в Atlassian Stash;
  • Добавлен SSH-ключ для учетной записи Stash под названием Capistrano (уже используется Capistrano для успешного подключения с использованием имени пользователя и пароля к Stash).
  • Протестировано SSH-соединение с помощью команды git clone ssh://[email protected]:7999/project/repository.git, репозиторий успешно клонирован;
  • Изменена следующая строка на config/deploy.rb в каталоге проекта Capistrano: set :repo_url, 'ssh://[email protected]:7999/project/repository.git'

Проблема в том, что при выполнении команды cap production git:check я получаю следующие строки ошибок и развертывание отменяется:

INFO [8b21e06e] Running /usr/bin/env mkdir -p /tmp/capistrano_project_name/ as [email protected]
DEBUG [8b21e06e] Command: /usr/bin/env mkdir -p /tmp/capistrano_project_name/
INFO [8b21e06e] Finished in 0.292 seconds with exit status 0 (successful).
DEBUG Uploading /tmp/capistrano_project_name/git-ssh.sh 0.0%
INFO Uploading /tmp/capistrano_project_name/git-ssh.sh 100.0%
INFO [376577ce] Running /usr/bin/env chmod +x /tmp/capistrano_project_name/git-ssh.sh as [email protected]
DEBUG [376577ce] Command: /usr/bin/env chmod +x /tmp/capistrano_project_name/git-ssh.sh
INFO [376577ce] Finished in 0.036 seconds with exit status 0 (successful).
INFO [2ed5c706] Running /usr/bin/env git ls-remote --heads ssh://[email protected]:7999/project/repository.git as [email protected]
DEBUG [2ed5c706] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/capistrano_project_name/git-ssh.sh /usr/bin/env git ls-remote --heads ssh://[email protected]:7999/project/repository.git )
DEBUG [2ed5c706]        Permission denied (publickey).
DEBUG [2ed5c706]        fatal: Could not read from remote repository.
DEBUG [2ed5c706]
DEBUG [2ed5c706]        Please make sure you have the correct access rights
DEBUG [2ed5c706]        and the repository exists.
(Backtrace restricted to imported tasks)
cap aborted!
Exception while executing as [email protected]: git exit status: 128
git stdout: Nothing written
git stderr: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Tasks: TOP => git:check
(See full trace by running task with --trace)

Я уже пытался просто изменить переменную на set :repo_url, 'ssh://[email protected]:7999/project/repository.git', но получаю ту же ошибку. Кто-нибудь успешно подключил Capistrano к Stash через SSH? Не могли бы вы предложить, как я могу отладить его? Я бы не хотел использовать имена пользователей и пароли в моих конфигурационных файлах Capistrano.


person itwebdeveloper    schedule 04.06.2015    source источник


Ответы (1)


Упрощенный ответ, но я предполагаю, что Капистрано берет не тот ключ. Я бы посоветовал вам проверить ключ ssh по умолчанию для пользователя развертывания. Итак, если capistrano настроен на вход на сервер с использованием deployuser, посмотрите, какой ключ подбирает deployuser. Может быть полезно протестировать ssh -T [email protected] -p 7999 и посмотреть, что получится.

person will_in_wi    schedule 05.06.2015
comment
Спасибо за ответ, @will. К сожалению, когда я выполняю (изменяя строку с моим доменом) команду ssh -T [email protected]:7999, я получаю ответ: ssh: Could not resolve hostname stash.domain.com:7999: Name or service not known, в то время как ping stash.domain.com работает правильно, я полагаю, это потому, что номер порта добавлен к домену. - person itwebdeveloper; 05.06.2015
comment
Спасибо, @will_in_wi. Причина в том, что я добавил ключ машины управления развертыванием (источник), а не системы развертывания (цель) в Stash, поэтому он не подбирал никаких ключей. С вашей командой я смог отладить, создать ключ SSH на рабочих серверах и добавить их в Stash. - person itwebdeveloper; 08.06.2015