$ 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代理转发报告
[成功]
repo_url
设置确定[success] ssh私钥文件存在
[success]
ssh-agent
进程似乎在本地运行
ssh-agent
命令识别的[成功]ssh-add
进程[成功] ssh私钥已添加到
ssh-agent
[success]应用程序存储库可从本地计算机访问
[成功]所有使用无密码登录的主机
[成功]
forward_agent
适用于所有主机[success] ssh代理成功转发到远程主机
- 醇>
可从远程主机访问的[success]应用程序存储库
似乎SSH代理转发设置正确!你可以继续 部署过程。
它在所有测试中都成功了,但仍然会出现同样的错误。
答案 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
插件的作者。