Ruby on rails SSHKit::Runner::ExecuteError
Ruby on rails SSHKit::Runner::ExecuteError,ruby-on-rails,bitbucket,capistrano3,Ruby On Rails,Bitbucket,Capistrano3,$bundle exec cap生产部署 (回溯仅限于导入的任务)cap已中止! SSHKit::Runner::ExecuteError: 作为执行时发生异常 Psara@sakura:git退出状态:128 git标准输出:未写入git stderr:权限被拒绝(公钥)。 致命:远程端意外挂起 SSHKit::命令::失败: git退出状态:128 git stdout:什么都没写 git stderr:权限被拒绝(公钥)。 致命:远程端意外挂起 Tasks:TOP=>git
$bundle exec cap生产部署
(回溯仅限于导入的任务)cap已中止!
SSHKit::Runner::ExecuteError:
作为执行时发生异常 Psara@sakura:git退出状态:128 git标准输出:未写入git stderr:权限被拒绝(公钥)。
致命:远程端意外挂起 SSHKit::命令::失败:
git退出状态:128
git stdout:什么都没写
git stderr:权限被拒绝(公钥)。
致命:远程端意外挂起
Tasks:TOP=>git:check(通过使用--trace运行task查看完整跟踪) 部署失败,出现错误:
作为执行时发生异常Psara@sakura:
git退出状态:128 git标准输出:未写入任何内容
git stderr:权限被拒绝(公钥)。
致命:远程端意外挂起 * 部署.rb 设置:应用程序“Psara”
集合:repo_url,'git@bitbucket.org:cblough/psara.git'
设置:将_部署到“/home/Psara/Psara”
设置:默认运行选项:pty=>true 名称空间:deploydo 在:重新启动后,:清除缓存do 在角色(:web)上,在::组中,限制:3,等待:10 #在这里,我们可以做任何事情,例如: #在release_路径中 #执行:rake,“缓存:清除” #结束 结束 结束 set:ssh_选项,{forward_代理:true,paranoid:true,键: “~/.ssh/id\u rsa”} * production.rb 设置:stage,:staging
设置:rails_env,:生产
角色:应用程序%w{sakura}
角色:web,%w{sakura}
角色:db,%w{sakura}
服务器“sakura”,用户:“Psara”,角色:%w{web app},my_属性:>:my_值
set:ssh_选项,{
密钥:%w(~/.ssh/id\u rsa),
转发代理:false,}
如果您能教我如何解决这个问题,我将非常高兴。 我已经在bitbucket上添加了公钥,但它不起作用。 * SSH代理转发报告
repo\u url
设置正常ssh代理程序
进程似乎正在本地运行ssh-agent
进程被ssh-add
命令识别ssh代理
转发\u代理
所有主机都正常看来SSH代理转发设置正确!你可以继续 使用部署过程 它在所有测试中都成功了,但仍然会出现相同的错误。
正如回溯所说,这可能与ssh公钥有关。我建议您使用进行故障排除。您将得到一份报告,精确地说明设置中出现了什么问题
免责声明,我是
capistrano ssh doctor
插件的作者。请确保您的计算机上运行了ssh代理,因为您正在使用ssh转发,您的本地密钥应该能够从bitbucket访问和克隆您的repo。您可以通过以下方式运行代理程序:
eval `ssh-agent`
ssh-add ~/.ssh/id_rsa
有关ssh转发的更多信息,请访问
您应该手动检查的另一件事是您可以使用ssh连接到服务器(您的公钥应该添加到服务器上的~/.ssh/authorized_keys
),当然,您可以在本地克隆您的repo(这可能是您能够做到的)
更新:
现在我已经意识到,您将转发用于生产,在这种情况下,您应该确保服务器上的密钥对(您必须拥有它,因为转发已关闭)能够从bitbucket克隆repo,您也可以尝试手动在服务器上克隆。请编辑您的问题以使用代码块,以便我们可以阅读它。也要清楚地定义你的错误。@Shion Yamaguchi:你是如何解决你的问题的,因为我也卡住了!!!和你在同一页上吗?嘿,拉斯塔谢普,甚至我也面临着同样的问题。。我经历了,但无法解决。@拉斯塔谢普,我在这里有一个类似的问题:。Capistrano是否登录到生产服务器,然后尝试将代码从存储库拉到生产服务器?如果是这样的话,有没有办法让Capistrano将代码从存储库推送到生产服务器?@massaskillz是的,Capistrano只是通过SSH登录到您的机器,然后执行由其DSL生成的命令。您可以创建自定义Capistrano任务来执行任何您想要的操作。不幸的是,我认为从存储库“推送”代码是不可能的,可以(通过scp命令)将代码从主机复制到服务器。