【问题标题】:Capistrano Deploy -- Net::SSH::AuthenticationFailed -- AWS EC2Capistrano 部署 -- Net::SSH::AuthenticationFailed -- AWS EC2
【发布时间】:2012-05-16 21:55:19
【问题描述】:

为什么我在尝试运行部署设置时会收到 authenicationFailed?我使用 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 /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)

部署.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

数据库.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

【问题讨论】:

    标签: ruby-on-rails amazon-web-services capistrano


    【解决方案1】:

    适用于 Capistrano v2

    指定pem文件的位置

    ssh_options[:keys] = ["/where/ever/it/is/key.pem"]
    

    适用于 Capistrano v3 ssh_options 略有变化,但基本设置几乎相同。

    set :ssh_options, {
      keys: %w(/where/ever/it/is/key.pem),
      forward_agent: false,
      user: 'ubuntu'
    } 
    

    【讨论】:

    • 多个开发者部署时我们应该如何处理?
    • ssh_options[:keys] = [File.join(ENV["HOME"], "/.ssh/key.pem")]
    【解决方案2】:

    你有“sudo”权限吗?用户“ubuntu”是否在 sudo 组中?

    【讨论】:

    • 我必须将 ssh_options[:keys] = ["/Users/Victoria/Documents/ServerKeys/key.pem"] 添加到我的 deploy.rb 文件中
    • 如果您可以使用“sudo”权限,您必须为您的用户 (ubuntu) 允许它。问题不在 capistrano 或 RoR 应用程序中。如果你不需要“sudo”,你可以设置:use_sudo false。我的 ubuntu 用户设置:sudo:x:27:oliver,deployer,michal
    【解决方案3】:

    部署到 ec2 实例时,您将没有 ubuntu 用户的 sudo 权限。

    改变这个:

    set :use_sudo, true

    到这里:

    set :use_sudo, false

    【讨论】:

      猜你喜欢
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 2013-03-15
      • 2016-08-29
      • 2013-06-15
      • 1970-01-01
      相关资源
      最近更新 更多