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.0
和net-ssh-gateway
在1.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 错误