15

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,  "[email protected]: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

3 Answers 3

16

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'
} 
Sign up to request clarification or add additional context in comments.

2 Comments

how should we handle this when several developers deploy?
ssh_options[:keys] = [File.join(ENV["HOME"], "/.ssh/key.pem")]
0

Do you have "sudo" rights? Is user "ubuntu" in sudo group?

2 Comments

I had to add ssh_options[:keys] = ["/Users/Victoria/Documents/ServerKeys/key.pem"] to my deploy.rb file
If you can use "sudo" rights, you must allow it for your user (ubuntu). Problem is not in capistrano or RoR app. If you don't need "sudo" you can set: use_sudo false. My ubuntu settings for users: sudo:x:27:oliver,deployer,michal
0

When deploying to an ec2 instance you will not have sudo rights with the ubuntu user.

Change this:

set :use_sudo, true

To this:

set :use_sudo, false

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.