Capistrano Deploy -- Net::SSH::AuthenticationFailed -- AWS EC2
amazon-web-services, capistrano, ruby-on-rails
Solution
For Capistrano v2
Specify the location of your pem file
ssh_options[:keys] = ["/where/ever/it/is/key.pem"]
For Capistrano v3 ssh_options have changed slightly, but basic settings are pretty much same.
set :ssh_options, {
keys: %w(/where/ever/it/is/key.pem),
forward_agent: false,
user: 'ubuntu'
}
Problem
Why am I getting authenicationFailed when I try to run deploy setup? I am using the ssh as my password. Do I need to change anything in the database.yml or deploy.rb. They are listed below. ``` $ cap deploy:setup * executing `deploy:setup' * executing "sudo -p 'sudo password: ' mkdir -p /var/www/apps/sample_app /var/www/apps/sample_app /releases /var/www/apps/sample_app/shared /var/www/apps/sample_app/shared/system /var/www /apps/sample_app/shared/log /var/www/apps/sample_app/shared/pids" servers: ["ec2-20-21-42-51.compute-1.amazonaws.com"] Password: connection failed for: ec2-20-21-42-51.compute-1.amazonaws.com (Net::SSH::AuthenticationFailed: ubuntu) ``` deploy.rb ``` # The name of your app set :application, "sample_app" # The directory on the EC2 node that will be deployed to set :deploy_to, "/var/www/apps/#{application}" set :keep_releases, 3 # deploy with git set :scm, :git set :repository, "git@github.com:username/sample_app.git" set :git_shallow_clone, 1 set :branch, "master" set :use_sudo, true set :user, "ubuntu" ssh_options[:forward_agent] = true default_run_options[:pty] = true # The address of the remote host on EC2 (the Public DNS address) set :location, "ec2-20-21-42-51.compute-1.amazonaws.com" # setup some Capistrano roles role :app, location role :web, location role :db, location, :primary => true after 'deploy:update_code', 'deploy:symlink_db' namespace :deploy do desc "Restart Application" task :restart, :roles => :app do run "touch #{deploy_to}/#{shared_dir}/tmp/restart.txt" end desc "Symlinks the database.yml" task :symlink_db, :roles => :app do run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml" end end ``` database.yml ``` development: adapter: mysql2 database: db/development.mysql2 pool: 5 timeout: 5000 database: sample_app username: root socket: /tmp/mysql.sock test: adapter: mysql2 database: db/test.mysql2 pool: 5 timeout: 5000 database: sample_app username: root socket: /tmp/mysql.sock production: adapter: mysql2 database: db/production.mysql2 pool: 5 timeout: 5000 database: sample_app username: ubuntu socket: /var/run/mysqld/mysqld.sock ```