1

我正在尝试使用 Capistrano 在 Rails 应用程序上实现 ruby​​,我在暂存服务器中运行 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

无法确定确切的问题和整合 capistrano 的方法。

4

1 回答 1

2

看起来很简单:Capistrano 在部署时不会提示输入密码,而是希望您的 SSH 密钥在目标服务器上对您进行身份验证。

因此,您尝试部署为(ubuntu)的用户似乎无法通过身份验证。

尝试将您的内容添加~/.ssh/id_rsa.pub到服务器:/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 回答