1

Capistrano を使用して Ruby on Rails アプリを実装しようとしています。ステージング サーバーで apache rvm を実行し、運用サーバーで nginx REE バージョンを実行しています。私もgitを使用しています。Capistrano を統合しようとしましたが、このエラーが発生しています

(Net::SSH::AuthenticationFailed: ubuntu)

ここに私の deploy.rb ファイルがあります

set :application, "capify"

# The directory on the EC2 node that will be deployed to
set :deploy_to, "/home/ubuntu/apps/#{application}"

set :keep_releases, 3

# deploy with git
set :scm, :git
set :repository,  "git@github.com:username/capify.git"
set :git_shallow_clone, 1
set :branch, "master"
set :use_sudo, false

set :user, "ubuntu"
ssh_options[:keys] = ["/path/tp/key.pem"]
ssh_options[:forward_agent] = true
default_run_options[:pty] = true

# The address of the remote host on EC2 (the Public DNS address)
set :location, "ip"

# 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

カピストラーノを統合する正確な問題と方法を理解できません。

4

1 に答える 1

2

簡単に思えます: Capistrano はデプロイ時にパスワードを要求するのではなく、SSH キーがターゲット サーバーでユーザーを認証することを期待します。

このため、(ubuntu)としてデプロイしようとしているユーザーを認証できないようです。

~/.ssh/id_rsa.pubあなたのコンテンツをservers:/home/ubuntu/.ssh/authorized_keysファイルに追加してみてください。

パスワードの入力を求めるプロンプトが表示されずにマシンに ssh できる場合は、機能しています

更新: あなたの場合ssh_options[:keys]、SSH 認証に使用する別のキーを定義するために を使用しています。そのディレクティブを削除して、標準の ssh キー (~/.ssh/id_rsa.pub にあるキー) をデフォルトにするか、指定している他のキーをサーバーのauthorized_keys ファイルに追加することができます。

オプションなしで試してみることをお勧めしssh_options[:keys]ます:)

于 2012-06-19T09:42:51.767 に答える