Ruby on rails 轨道&x2B;卡皮斯特拉诺+;EC2身份验证错误

Ruby on rails 轨道&x2B;卡皮斯特拉诺+;EC2身份验证错误,ruby-on-rails,amazon-web-services,amazon-ec2,capistrano,Ruby On Rails,Amazon Web Services,Amazon Ec2,Capistrano,我第一次尝试用Capistrano在AmazonEC2上部署Rails5应用程序,我不断收到一个身份验证错误。我使用的是SSH密钥,它们位于服务器的/home/deploy/.shh目录中。错误如下: Matts-MacBook-Pro-2:byc-master matt$ cap production deploy Thread:0x00007ff6731b0500@/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshk

我第一次尝试用Capistrano在AmazonEC2上部署Rails5应用程序,我不断收到一个身份验证错误。我使用的是SSH密钥,它们位于服务器的/home/deploy/.shh目录中。错误如下:

Matts-MacBook-Pro-2:byc-master matt$ cap production deploy

Thread:0x00007ff6731b0500@/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
1: from /Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:11:in block (2 levels) in execute'
    /Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute: Exception while executing as deploy@xx.xxx.xxx.xxx: Authentication failed for user deploy@xx.xxx.xxx.xxx (SSHKit::Runner::ExecuteError)
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@xx.xxx.xxx.xxx: Authentication failed for user deploy@xx.xxx.xxx.xxx

Caused by:
Net::SSH::AuthenticationFailed: Authentication failed for user deploy@xx.xxx.xxx.xxx

Tasks: TOP => rvm:check

我已经尝试了我在这里找到的几乎所有解决这个问题的方法,但都没有效果。我试图启动ssh代理并运行ssh add。这不起作用,给了我一个错误,如下所示

deploy@ip-xxx-xx-xx-xx:~/.ssh$ eval ssh-agent -s
SSH_AUTH_SOCK=/tmp/ssh-krRyWfHkGxEp/agent.7443; export SSH_AUTH_SOCK;
SSH_AGENT_PID=7444; export SSH_AGENT_PID;
echo Agent pid 7444;
deploy@ip-xxx-xx-xx-xx:~/.ssh$ ssh-add /home/deploy/.ssh

Could not open a connection to your authentication agent.
如果有人能帮我这个忙,我无法告诉你我有多感激。这消耗了我整个周末的时间,我还没有解决这个问题

部署.rb

lock "~> 3.10.1"

set :application, 'site'
set :repo_url, 'git@github.com:name/site.git' 
set :branch, :master
set :deploy_to, '/home/deploy/site'
set :pty, true
set :linked_files, %w{config/database.yml config/application.yml}
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system public/uploads}
set :keep_releases, 5
set :rvm_type, :user
set :rvm_ruby_version, 'ruby-2.5.0'

set :puma_rackup, -> { File.join(current_path, 'config.ru') }
set :puma_state, "#{shared_path}/tmp/pids/puma.state"
set :puma_pid, "#{shared_path}/tmp/pids/puma.pid"
set :puma_bind, "unix://#{shared_path}/tmp/sockets/puma.sock"
set :puma_conf, "#{shared_path}/puma.rb"
set :puma_access_log, "#{shared_path}/log/puma_error.log"
set :puma_error_log, "#{shared_path}/log/puma_access.log"
set :puma_role, :app
set :puma_env, fetch(:rack_env, fetch(:rails_env, 'production'))
set :puma_threads, [0, 8]
set :puma_workers, 0
set :puma_worker_timeout, nil
set :puma_init_active_record, true
set :puma_preload_app, false

set :ssh_options, {
  user: "deploy",      
  keys: ["home/deploy/.ssh/id_rsa.pub"] 
}

namespace :deploy do
  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
      # Here we can do anything
    end
  end
end
server 'xx.xxx.xxx.xxx', user: 'deploy', roles: %w{web app db}
数据库.yml

development: 
  adapter: postgresql
  encoding: unicode
  database: byc-master_db
  pool: 5
  username: [username]
  password: [password]
  timeout: 5000

production:
  adapter: postgresql
  encoding: unicode
  database: byc_production
  username: [username]
  password: [password]
  host: localhost
  port: 5432
production.rb

lock "~> 3.10.1"

set :application, 'site'
set :repo_url, 'git@github.com:name/site.git' 
set :branch, :master
set :deploy_to, '/home/deploy/site'
set :pty, true
set :linked_files, %w{config/database.yml config/application.yml}
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system public/uploads}
set :keep_releases, 5
set :rvm_type, :user
set :rvm_ruby_version, 'ruby-2.5.0'

set :puma_rackup, -> { File.join(current_path, 'config.ru') }
set :puma_state, "#{shared_path}/tmp/pids/puma.state"
set :puma_pid, "#{shared_path}/tmp/pids/puma.pid"
set :puma_bind, "unix://#{shared_path}/tmp/sockets/puma.sock"
set :puma_conf, "#{shared_path}/puma.rb"
set :puma_access_log, "#{shared_path}/log/puma_error.log"
set :puma_error_log, "#{shared_path}/log/puma_access.log"
set :puma_role, :app
set :puma_env, fetch(:rack_env, fetch(:rails_env, 'production'))
set :puma_threads, [0, 8]
set :puma_workers, 0
set :puma_worker_timeout, nil
set :puma_init_active_record, true
set :puma_preload_app, false

set :ssh_options, {
  user: "deploy",      
  keys: ["home/deploy/.ssh/id_rsa.pub"] 
}

namespace :deploy do
  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
      # Here we can do anything
    end
  end
end
server 'xx.xxx.xxx.xxx', user: 'deploy', roles: %w{web app db}
Capfile

require "capistrano/setup"
require "capistrano/deploy"
require "capistrano/scm/git"
install_plugin Capistrano::SCM::Git

require "capistrano/rvm"
require "capistrano/bundler"
require "capistrano/rails/assets"
require "capistrano/rails/migrations"
require 'capistrano/puma'

Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
我还对部署进行了跟踪,得到了消息

Matts-MacBook-Pro-2:byc-master matt$ cap production deploy --trace
** Invoke production (first_time)
** Execute production
** Invoke load:defaults (first_time)
** Execute load:defaults
** Invoke rvm:hook (first_time)
** Execute rvm:hook
** Invoke rvm:check (first_time)
** Execute rvm:check
Thread:0x00007fb69e1416d8@/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
1: from /Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:11:in block (2 levels) in execute
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as deploy@xx.xxx.xxx.xxx:         Authentication failed for user deploy@xx.xxx.xxx.xxx    (SSHKit::Runner::ExecuteError)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@18.220.132.211: Authentication failed for user deploy@18.220.132.211
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute'

Caused by:
Net::SSH::AuthenticationFailed: Authentication failed for user    deploy@xx.xxx.xxx.xxx
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/net-ssh-4.2.0/lib/net/ssh.rb:254:in `start'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/connection_pool.rb:59:in `call'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/connection_pool.rb:59:in `with'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/netssh.rb:176:in `with_ssh'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/netssh.rb:129:in `execute_command'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/abstract.rb:141:in `block in    create_command_and_execute'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/abstract.rb:141:in `tap'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/abstract.rb:141:in `create_command_and_execute'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/abstract.rb:60:in `capture'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/capistrano-rvm-0.1.2/lib/capistrano/tasks/rvm.rake:9:in `block (3 levels) in <top (required)>'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/abstract.rb:29:in `instance_exec'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/abstract.rb:29:in `run'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
Tasks: TOP => rvm:check
Matts-MacBook-Pro-2:byc master matt$cap生产部署--跟踪
**调用生产(第一次)
**执行生产
**调用加载:默认值(第一次)
**执行加载:默认值
**调用rvm:hook(第一次)
**执行rvm:hook
**调用rvm:检查(第一次)
**执行rvm:检查
线程:0x00007fb69e1416d8@/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:10 run>异常终止(异常报告为true):
回溯(最近一次呼叫最后一次):
1:from/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:11:in-block(2级)in-execute
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:15:“执行中的块(2个级别)中的救援”:作为deploy@xx.xxx.xxx.xxx:用户身份验证失败deploy@xx.xxx.xxx.xxx(SSHKit::Runner::ExecuteError)
帽子流产了!
SSHKit::Runner::ExecuteError:作为执行时发生异常deploy@18.220.132.211:用户身份验证失败deploy@18.220.132.211
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:15:“执行中的块(2级)救援”
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:11:在“执行中的块(2个级别)”中
原因:
Net::SSH::AuthenticationFailed:用户身份验证失败deploy@xx.xxx.xxx.xxx
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/net-ssh-4.2.0/lib/net/ssh.rb:254:在“开始”中
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/connection_pool.rb:59:in'call'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/connection_pool.rb:59:in'with'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/netssh.rb:176:in“with_ssh”
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/netssh.rb:129:“执行命令”中
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/abstract.rb:141:在“创建命令和执行中的块”中
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/abstract.rb:141:in'tap'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/abstract.rb:141:in“create_command_and_execute”
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/abstract.rb:60:在“捕获”中
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/capistrano-rvm-0.1.2/lib/capistrano/tasks/rvm.rake:9:in'block(3层)in'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/abstract.rb:29:in'instance_exec'
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/backends/abstract.rb:29:在“运行”中
/Users/matt/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/sshkit-1.16.0/lib/sshkit/runners/parallel.rb:12:在“执行中的块(2个级别)”中
任务:TOP=>rvm:检查

在执行
eval`ssh-agent-s`
之后,您是否创建了
deploy
用户创建的?这两个都是。我作为服务器上的部署登录,eval'ssh-agent-s'只是告诉我一个错误:无法打开到身份验证代理的连接。