SSHKit ::亚军:: ExecuteError

时间:2015-02-06 21:57:48

标签: ruby-on-rails bitbucket capistrano3

$ bundle exec cap production deploy

  

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

     

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

  任务:TOP => git:check(通过使用--trace运行任务来查看完整跟踪)   部署失败并出现错误:   
  执行Psara @ sakura时出现异常:   
  git退出状态:128 git stdout:没有写任何内容   
  git stderr:权限被拒绝(公钥)。
  
  致命:远程端意外挂断

*

  

deploy.rb

     

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

     

namespace:deploy do

     

之后:restart,:clear_cache do       on roles(:web),in :: groups,limit:3,wait:10 do         #这里我们可以做任何事情,例如:         #在release_path中执行         #cute:rake,'cache:clear'         # 结束       结束

     

     

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 {网络应用},my_property:>:my_value

     

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



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

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

*

SSH代理转发报告

  
     
      
  1. [成功] repo_url设置确定

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

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

  6.   
  7. ssh-agent命令识别的[成功] ssh-add进程

  8.   
  9. [成功] ssh私钥已添加到ssh-agent

  10.   
  11. [success]应用程序存储库可从本地计算机访问

  12.   
  13. [成功]所有使用无密码登录的主机

  14.   
  15. [成功] forward_agent适用于所有主机

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

  18.   
  19. 可从远程主机访问的[success]应用程序存储库

  20.         
         

    似乎SSH代理转发设置正确!你可以继续   部署过程。

         

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

2 个答案:

答案 0 :(得分:48)

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

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

有关ssh-forwarding的更多信息,您可以find here

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

更新

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

答案 1 :(得分:3)

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

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