SSHKit ::亚军:: ExecuteError

$ bundle exec cap production deploy

(Backtrace限制为导入任务)上限中止!
SSHKit ::亚军:: ExecuteError:
执行Psara @ sakura时出现exception:git退出状态:128 git stdout:没有写git stderr:Permission denied(publickey)。
致命:远程端意外挂断

SSHKit ::命令::失败:
git退出状态:128
git stdout:没有写
git stderr:权限被拒绝(publickey)。
致命:远程端意外挂断

任务:TOP => git:check(通过使用–trace运行任务来查看完整跟踪)部署失败并显示错误:
执行Psara @ sakura时出现exception:
git退出状态:128 git stdout:没有写任何内容
git stderr:权限被拒绝(publickey)。

致命:远程端意外挂断

*

deploy.rb

设置:应用程序,’Psara’
set:repo_url,’git @ bitbucket.org:CBLaughter / psara.git’
set:deploy_to,’/ home / Psara / Psara’
set:default_run_options,:pty => true

namespace:deploy do

after:restart,:clear_cache do on roles(:web),in :: groups,limit:3,wait:10 do#这里我们可以做任何事情,例如:#inplace_path do #execute:rake,’cache:clear’ #end end end

结束

set:ssh_options,{forward_agent:true,paranoid:true,keys:“〜/ .ssh / id_rsa”}

*

production.rb

set:stage,:staging
set:rails_env,:production

角色:app,%w {sakura}
角色:网络,%w {sakura}
角色:db,%w {sakura}

服务器’sakura’,用户:’Psara’,角色:%w {web app},my_property:>:my_value

set:ssh_options,{
键:%w(〜/ .ssh / id_rsa),
forward_agent:false,}

我很高兴,如果你能教我如何解决这个问题。

我已经在bitbucket上添加了一个公钥,但它不起作用。

*

SSH代理转发报告


  1. [成功] repo_url设置好

  2. [success] ssh私钥文件存在

  3. [success] ssh-agent进程似乎在本地运行

  4. [success] ssh-add命令识别的ssh-add ssh-agent进程

  5. [success] ssh私钥添加到ssh-agent

  6. [success]应用程序存储库可从本地机器访问

  7. [success]所有主机使用无密码登录

  8. [success] forward_agent确定所有主机

  9. [success] ssh代理成功转发到远程主机

  10. [success]可从远程主机访问的应用程序库


看来SSH代理转发设置正确! 您可以继续部署过程。

它在所有测试中都成功了,但仍然会出现同样的错误。

确保您的计算机上运行了ssh-agent,因为您正在使用ssh转发,您的本地密钥应该能够从bitbucket访问和克隆您的repo。 您可以使用以下命令运行代理:

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

有关ssh-forwarding的更多信息,您可以在这里找到 。

你应该手动检查的其他事情是你可以ssh到你的服务器(你的公钥应该添加到服务器上的~/.ssh/authorized_keys ),当然你可以在本地克隆你的repo(可能你可以做)。

更新:

现在我已经意识到你转向生产,在这种情况下,你应该确保你的服务器上的密钥对(你必须拥有它,因为转发已关闭),能够从bitbucket克隆回购,你可以尝试也可以手工克隆服务器。

正如回溯所说,这可能与ssh公钥有关。 我建议使用capistrano-ssh-doctor解决问题。 您将获得一份报告,准确说明设置中出了什么问题。

免责声明,我是capistrano-ssh-doctor插件的作者。