0

capistrano を使用して、AWS EC2 インスタンスへのデプロイをセットアップしようとしています。テストするために、私は使用しています

cap testing deploy:check

しかし、カピストラーノは次のように失敗します:

    triggering load callbacks
  * 2013-03-12 15:41:27 executing `testing'
    triggering start callbacks for `deploy:check'
  * 2013-03-12 15:41:27 executing `multistage:ensure'
  * 2013-03-12 15:41:27 executing `deploy:check'
  * executing "test -d /......./releases"
    servers: ["ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com"]
    connection failed for: ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com
    (NoMethodError: undefined method `each' for "publickey":String)

.pem ファイルを使用して接続しています。 deploy.rb スクリプトは次のようになります。

set :stages, %w(production testing)
set :default_stage, 'testing'
require 'capistrano/ext/multistage'

set :application, 'app_name'
set :user, 'the_user'
set :group, 'the_group'

set :scm, :git
set :repository,  "git@github.com:......./#{application}.git"
set :deploy_to, '/......./'
set :deploy_via, :remote_cache

# Authentication setup
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
ssh_options[:auth_methods] = 'publickey'
ssh_options[:keys] = ['~/........pem']

なぜこれが起こっているのですか?

4

3 に答える 3

0

公開鍵をサーバーに置いてみてください。

そして取り除く

ssh_options[:auth_methods] = '公開鍵'

ssh_options[:keys] = ['~/........pem']

それはうまくいくはずです

于 2013-03-12T14:00:21.310 に答える
0

線を取り除く

ssh_options[:auth_methods] = 'publickey'
于 2013-03-13T05:41:25.330 に答える
0

最近開発サーバーをアップグレードしたところ、同じ動作が見られました。エラーメッセージは、カピストラーノがイテラブルを期待しているように見えますが、割り当てpublicKeyはそれをそのように定義していません。

些細なことに聞こえるかもしれませんが、次のように変更してみてください。

ssh_options[:auth_methods] = 'publickey'
ssh_options[:keys] = ['~/........pem']

に:

set :ssh_options, {:auth_methods => "publickey"}
set :ssh_options, {:keys => ["~/......pem"]}

認証設定の他の項目についても同じことが必要になる場合があります。幸運を。

于 2013-03-13T00:59:24.377 に答える