Ruby on rails Capistrano部署--Net::SSH::AuthenticationFailed--AWS EC2
为什么在尝试运行部署安装程序时获取Authentication失败?我使用ssh作为密码。我是否需要更改database.yml或deploy.rb中的任何内容。它们列在下面Ruby on rails Capistrano部署--Net::SSH::AuthenticationFailed--AWS EC2,ruby-on-rails,amazon-web-services,capistrano,Ruby On Rails,Amazon Web Services,Capistrano,为什么在尝试运行部署安装程序时获取Authentication失败?我使用ssh作为密码。我是否需要更改database.yml或deploy.rb中的任何内容。它们列在下面 $ cap deploy:setup * executing `deploy:setup' * executing "sudo -p 'sudo password: ' mkdir -p /var/www/apps/sample_app /var/www/apps/sample_app /releases /va
$ 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
你有“sudo”的权利吗?用户“ubuntu”在sudo组中吗?当部署到ec2实例时,您将没有ubuntu用户的sudo权限 更改此项:
set:使用sudo,true
为此:
set:对Capistrano v2使用sudo,false
指定pem文件的位置
ssh_options[:keys] = ["/where/ever/it/is/key.pem"]
适用于Capistrano v3
ssh_选项略有更改,但基本设置基本相同
set :ssh_options, {
keys: %w(/where/ever/it/is/key.pem),
forward_agent: false,
user: 'ubuntu'
}
我必须在我的deploy.rb文件中添加ssh_选项[:keys]=[“/Users/Victoria/Documents/ServerKeys/key.pem”]如果你可以使用“sudo”权限,你必须允许你的用户使用它(ubuntu)。问题不在capistrano或RoR应用程序中。如果不需要“sudo”,可以设置:use_sudo false。我的ubuntu用户设置:sudo:x:27:oliver,deployer,michal当几个开发人员部署时,我们应该如何处理这个问题?ssh_选项[:key]=[File.join(ENV[“HOME”],“/.ssh/key.pem”)]