SSHKit:: Runner:: ExecuteError

$ bundle exec cap production deploy

(Backtrace, ограниченная импортированными задачами), прервана!
SSHKit:: Runner:: ExecuteError:
Исключение при выполнении как Psara @sakura: git статус выхода: 128 git stdout: Ничего не написано gitstderr: Permission denied (publickey).
фатальный: удаленный конец неожиданно повесил трубку

SSHKit:: Команда:: Ошибка:
git статус выхода: 128
git stdout: ничего не написано
git stderr: Permission denied (publickey).
фатальный: удаленный конец неожиданно повесил трубку

Задачи: TOP = > git: проверить (см. Полный след, выполнив задачу с помощью --trace) Ошибка развертывания с ошибкой:
Исключение при исполнении как Psara @sakura:
git статус выхода: 128 git stdout: ничего не написано
git stderr: Permission denied (publickey).

фатальный: удаленный конец неожиданно повесил трубку

*

deploy.rb

set: приложение, "Псара"
 set: repo_url, 'git @bitbucket.org: CBLaughter/psara.git'
 set: deploy_to, '/home/Psara/Psara'
 set: default_run_options,: pty = > true

namespace: deploy do

после: restart,: clear_cache do     на роли (: web), в:: группы, лимит: 3, wait: 10 do       # Здесь мы можем сделать что угодно, например:       # внутри release_путь сделать       # execute: rake, 'cache: clear'       # конец     конец

конец

set: ssh_options, {forward_agent: true, paranoid: true, keys: "~/.ssh/id_rsa" }

*

production.rb

set: stage,: staging
set: rails_env,: производство

role: app,% w {sakura}
role: web,% w {sakura}
role: db,% w {sakura}

server 'sakura', пользователь: "Psara", роли:% w {веб-приложение}, my_property: > : my_value

set: ssh_options, {
 ключи:% w (~/.ssh/id_rsa),
 forward_agent: false,}



Я был бы рад, если бы вы научили меня тому, что я могу сделать, чтобы решить эту проблему.

Я уже добавил открытый ключ в битбакет, но он не работает.

*

Отчет о перенаправлении агента SSH


  • [success] repo_url настройка ok

  • [success] ssh файл закрытого ключа существует

  • [success] ssh-agent процесс работает локально

  • [успех] ssh-agent процесс распознается командой ssh-add

  • [success] Закрытые ключи ssh добавлены в ssh-agent

  • [success] репозиторий приложений, доступный с локальной машины

  • [success] все хосты, использующие вход без пароля

  • [успех] forward_agent ok для всех хостов

  • [success] ssh агент успешно перенаправлен на удаленные хосты

  • [success] репозиторий приложений, доступный с удаленных хостов


Кажется, что перенаправление агента SSH настроено правильно! Вы можете продолжить с процессом развертывания.

Он преуспел во всех тестах, но все равно делает одну и ту же ошибку.

Ответы

Ответ 1

Убедитесь, что на вашем компьютере запущен ssh-agent, поскольку вы используете пересылку ssh, ваши локальные ключи должны иметь доступ и клонировать ваше репо из битбакета. Вы можете запустить агент с помощью:

eval `ssh-agent`
ssh-add ~/.ssh/id_rsa

Подробнее о ssh-forwarding вы можете найти здесь.

Другая вещь, которую вы должны проверить вручную, - это то, что вы можете ssh на свой сервер (ваш открытый ключ должен быть добавлен в ~/.ssh/authorized_keys на сервере), и, конечно, вы можете клонировать свое репо локально (возможно, вы можете делать).

Update:

Теперь я понял, что вы переходите на производство для производства, в этом случае вы должны убедиться, что пара ключей на вашем сервере (вы должны иметь его, поскольку пересылка отключена), способны клонировать репо из битбакета, вы можете попробовать клонирование на сервере вручную.

Ответ 2

Как говорит backtrace, это, вероятно, связано с открытыми ключами ssh. Я бы рекомендовал устранить проблему с помощью capistrano-ssh-doctor. Вы получите отчет, в котором точно указано, что пошло не так в настройке.

Отказ от ответственности, я являюсь автором плагина capistrano-ssh-doctor.