Rails 4 + Capistrano + AWS Net::SSH::AuthenticationFailed: 部署

Posted

技术标签:

【中文标题】Rails 4 + Capistrano + AWS Net::SSH::AuthenticationFailed: 部署【英文标题】:Rails 4 + Capistrano + AWS Net::SSH::AuthenticationFailed: deploy 【发布时间】:2016-07-13 23:16:20 【问题描述】:

我按照 this 教程使用 capistrano 部署我的 Rails 4 应用程序到 AWS 并且很难解决这个问题。

当我运行 cap production deploy 时,它失败并出现以下错误

Net::SSH::AuthenticationFailed: deploy

下面是完整的跟踪

** Invoke production (first_time)
** Execute production
** Invoke load:defaults (first_time)
** Execute load:defaults
** Invoke bundler:map_bins (first_time)
** Execute bundler:map_bins
** Invoke rvm:hook (first_time)
** Execute rvm:hook
** Invoke rvm:check (first_time)
** Execute rvm:check
DEBUG [2439e1e0] Running ~/.rvm/bin/rvm version on 52.37.242.197
DEBUG [2439e1e0] Command: ~/.rvm/bin/rvm version
cap aborted!
Net::SSH::AuthenticationFailed: deploy
/home/pavan/.rvm/gems/ruby-2.2.3/gems/net-ssh-2.7.0/lib/net/ssh.rb:215:in `start'
/home/pavan/.rvm/gems/ruby-2.2.3/gems/sshkit-1.3.0/lib/sshkit/backends/connection_pool.rb:25:in `create_or_reuse_connection'
/home/pavan/.rvm/gems/ruby-2.2.3/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:173:in `ssh'
/home/pavan/.rvm/gems/ruby-2.2.3/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:126:in `block in _execute'
/home/pavan/.rvm/gems/ruby-2.2.3/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:123:in `tap'
/home/pavan/.rvm/gems/ruby-2.2.3/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:123:in `_execute'
/home/pavan/.rvm/gems/ruby-2.2.3/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:76:in `capture'
/home/pavan/.rvm/gems/ruby-2.2.3/gems/capistrano-rvm-0.1.2/lib/capistrano/tasks/rvm.rake:9:in `block (3 levels) in <top (required)>'
/home/pavan/.rvm/gems/ruby-2.2.3/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:54:in `instance_exec'
/home/pavan/.rvm/gems/ruby-2.2.3/gems/sshkit-1.3.0/lib/sshkit/backends/netssh.rb:54:in `run'
/home/pavan/.rvm/gems/ruby-2.2.3/gems/sshkit-1.3.0/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
Tasks: TOP => rvm:check

根据此SO 帖子,我尝试将net-ssh 锁定在2.7.0net-ssh-gateway1.2.0,但错误仍然存​​在。任何帮助表示赞赏。

环境:

操作系统 - Ubuntu 14.04 LTS

Ruby - 2.2.3p173

Rails - 4.2.5

Capistrano - 3.4.0

net-ssh - 2.7.0

net-ssh-gateway - 1.2.0

【问题讨论】:

你的机器和服务器是如何认证的? @Nithin 我正在使用此命令连接到服务器 ssh -i "/home/pavan/Downloads/myfile.pem" ubuntu@52.37.242.197 【参考方案1】:

Sparkmasterflex 正确回答了 net-ssh 的问题,但是虽然这会使 capistrano 正常工作,但它可能会破坏您的 rails 应用程序: 这些步骤为我固定了 capistrano 和 rails:

    在您的 Gemfile 中添加 gem 'net-ssh', '2.7.0' 运行 bundle update net-ssh 运行包(只是为了确保一切正常' 运行 gem uninstall net-ssh -v 2.8.0

如果您是 rails 用户,您现在应该能够同时运行 rails 服务器和 capistrano。

【讨论】:

以上是关于Rails 4 + Capistrano + AWS Net::SSH::AuthenticationFailed: 部署的主要内容,如果未能解决你的问题,请参考以下文章

Rails 4,Capistrano 3.0.0,无法加载这样的文件——部署

ruby 使用Capistrano 3和rsync进行本地Rails 4资产预编译

Rails 3 -- Bundler/Capistrano 错误

无法通过 capistrano 部署 rails 5 应用程序

资产预编译 Capistrano 3.4

Capistrano 部署 Rails 应用程序 - 如何处理长时间迁移?