2012-06-23 5 views
5

サーバーにssh接続しようとすると、サーバーの認証キーにid_rsa.pubというキーが追加されてしまいます。ローカルマシンからサーバーに展開するときにCapistranoがSSHパスワードを要求する

私のローカルプロジェクトフォルダからサーバーにCapistrano経由でコードを配布しようとすると、サーバーはパスワードを要求します。

sshで同じサーバーに展開できない場合、何が問題になるか理解できません。

$キャップデプロイ:セットアップ

"no seed data" 
triggering start callbacks for `deploy:setup' 
* 13:42:18 == Currently executing `multistage:ensure' 
*** Defaulting to `development' 
* 13:42:18 == Currently executing `development' 
* 13:42:18 == Currently executing `deploy:setup' 
triggering before callbacks for `deploy:setup' 
* 13:42:18 == Currently executing `db:configure_mongoid' 
* executing "mkdir -p /home/deploy/apps/development/flyingbird/shared/config" 
servers: ["dev1.noob.com", "176.9.24.217"] 
Password: 

キャップスクリプト:

# gem install capistrano capistrano-ext capistrano_colors 
begin; require 'capistrano_colors'; rescue LoadError; end 
require "bundler/capistrano" 

# RVM bootstrap 
# $:.unshift(File.expand_path('./lib', ENV['rvm_path'])) 
require 'rvm/capistrano' 
set :rvm_ruby_string, 'ruby-1.9.2-p290' 
set :rvm_type, :user # or :user 

# Application setup 
default_run_options[:pty] = true # allow pseudo-terminals 
ssh_options[:forward_agent] = true # forward SSH keys (this will use your SSH key to get the code from git repository) 
ssh_options[:port] = 22 
set :ip, "dev1.noob.com" 
set :application, "flyingbird" 

set :repository, "repo-path" 
set :scm, :git 
set :branch, fetch(:branch, "master") 

set :deploy_via, :remote_cache 
set :rails_env, "production" 
set :use_sudo, false 
set :scm_username, "user" 
set :user, "user1" 


set(:database_username) { application } 
set(:production_database) { application + "_production" } 
set(:staging_database) { application + "_staging" } 
set(:development_database) { application + "_development" } 


role :web, ip      # Your HTTP server, Apache/etc 
role :app, ip       # This may be the same as your `Web` server 
role :db, ip, :primary => true # This is where Rails migrations will run 


# Use multi-staging 
require "capistrano/ext/multistage" 
set :stages, ["development", "staging", "production"] 
set :default_stage, rails_env 

before "deploy:setup", "db:configure_mongoid" 

# Uncomment if you use any of these databases 
after "deploy:update_code", "db:symlink_mongoid" 
after "deploy:update_code", "uploads:configure_shared" 
after "uploads:configure_shared", "uploads:symlink" 


after 'deploy:update_code', 'bundler:symlink_bundled_gems' 
after 'deploy:update_code', 'bundler:install' 
after "deploy:update_code", "rvm:trust_rvmrc" 

# Use this to update crontab if you use 'whenever' gem 
# after "deploy:symlink", "deploy:update_crontab" 

if ARGV.include?("seed_data") 
    after "deploy", "db:seed" 
else 
    p "no seed data" 
end 


    #Custom tasks to handle resque and redis restart 
    before "deploy", "deploy:stop_workers" 
    after "deploy", "deploy:restart_redis" 
    after "deploy", "deploy:start_workers" 
    after "deploy", "deploy:cleanup" 

    'Create symlink for public uploads' 
    namespace :uploads do 
     task :symlink do 
     run <<-CMD 
      rm -rf #{release_path}/public/uploads && 
      mkdir -p #{release_path}/public && 
      ln -nfs #{shared_path}/public/uploads #{release_path}/public/uploads 
     CMD 
     end 
    task :configure_shared do 
    run "mkdir -p #{shared_path}/public" 
    run "mkdir -p #{shared_path}/public/uploads" 
    end 
end 


    namespace :rvm do 
     desc 'Trust rvmrc file' 
     task :trust_rvmrc do 
     run "rvm rvmrc trust #{current_release}" 
     end 
    end 



     namespace :db do 

     desc "Create mongoid.yml in shared path" 
      task :configure_mongoid do 
      db_config = <<-EOF 
      defaults: &defaults 
      host: localhost 

     production: 
      <<: *defaults 
      database: #{production_database} 
     staging: 
      <<: *defaults 
      database: #{staging_database} 
      EOF 

      run "mkdir -p #{shared_path}/config" 
      put db_config, "#{shared_path}/config/mongoid.yml" 
     end 

      desc "Make symlink for mongoid.yml" 
      task :symlink_mongoid do 
      run "ln -nfs #{shared_path}/config/mongoid.yml #{release_path}/config/mongoid.yml" 
      end 

      desc "Fill the database with seed data" 
      task :seed do 
       run "cd #{current_path}; RAILS_ENV=#{default_stage} bundle exec rake     db:seed" 
       end 

      end 

      namespace :bundler do 
      desc "Symlink bundled gems on each release" 
      task :symlink_bundled_gems, :roles => :app do 
      run "mkdir -p #{shared_path}/bundled_gems" 
      run "ln -nfs #{shared_path}/bundled_gems #{release_path}/vendor/bundle" 
      end 






      desc "Install bundled gems " 
       task :install, :roles => :app do 
       run "cd #{release_path} && bundle install --deployment" 
       end 
      end 



      namespace :deploy do 
       task :start, :roles => :app do 
       run "touch #{current_path}/tmp/restart.txt" 
      end 

      desc "Restart the app" 
       task :restart, :roles => :app do 
       run "touch #{current_path}/tmp/restart.txt" 
      end 

      desc "Start the workers" 
       task :stop_workers do 
       run "cd #{current_path}; RAILS_ENV=#{default_stage} bundle exec rake         resque:stop_workers" 
      end 

      desc "Restart Redis server" 
       task :restart_redis do 
       "/etc/init.d/redis-server restart" 
      end 

      desc "Start the workers" 
       task :start_workers do 
        run "cd #{current_path}; RAILS_ENV=#{default_stage} bundle exec rake resque:start_workers" 
      end 


     end 
+0

わから@ slhck – Bijendra

+0

それは既に存在しているのです。 ssh_options [:forward_agent] = true – Bijendra

+0

@slhckはちょうど編集をチェクする。 – Bijendra

答えて

1

あなたはSSHのユーザーおよび認証用の秘密鍵の両方を指定する必要があります。

すなわち:

set :user, "deploy" 
set :ssh_key, "deploy.pem" 

y ou'reあなたがこのような環境のためのあなたのstages.ymlファイルに、ある表示されカピストラーノの多段を使用して、キーを追加:私はそれを追加します

user:  "deploy" 
ssh_key: "deploy.pem" 
+0

遅延のお詫び。実際にこれを逃した.. :( – Bijendra

関連する問題