web-dev-qa-db-ja.com

Capistrano SSH :: AuthenticationFailed、パスワードの入力を求められません

しばらくの間、私はcapistranoを正常に使用してきましたが、展開する能力を失ったすべてのプロジェクトで突然です。

環境:

  • os X(マーベリックス)
  • Ruby 1.9.3p194
  • rvm(サーバー上ではなくローカル)
  • Rails 3.2以降
  • RubyGems 1.8.25

Rsa_keysなど、capistranoにユーザーとパスワードの入力を求めるものを使用していません。突然、パスワードを要求しないことに決めましたが、ユーザーは要求します。その後、ロールバックされ、次のエラーが表示されます。

[deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: sub.example.com (Net::SSH::AuthenticationFailed: Authentication failed for user [email protected])
connection failed for: sub.example.com (Net::SSH::AuthenticationFailed: Authentication failed for user [email protected])

これは、個人のラップトップと職場のiMacで発生しました。 2つの異なるサーバーにデプロイするときに発生します(両方ともLinux)

私はここで完全に迷っています。何か案は?

52
Sparkmasterflex

理解した!どうやらこの問題はnet-ssh gem。最近、バージョン2.8.0をインストールし、開発環境にいくつかの更新を加えました。これが原因でした。

なぜ失敗したのかわかりませんが、gem uninstall net-ssh -v 2.8.0<私のためにそれを修正しました。

なぜこれが問題なのか、または新しいバージョンのnet-ssh聞いてみたい。

94
Sparkmasterflex

答えは、あなたのRailsアプリを壊す可能性があります。

問題は Sparkmasterflex で正解されたnet-sshにありますが、これはcapistranoが正常に動作するようになりますが、Rails app:

これらの手順により、capistranoとRails for me ...

  1. Gemfileにgem 'net-ssh', '2.7.0'を追加します
  2. bundle update net-sshを実行します
  3. bundleを実行します(すべてが正常に機能していることを確認するためだけです)
  4. gem uninstall net-ssh -v 2.8.0を実行します

Railsユーザーの場合、Railsサーバーとcapistranoの両方を実行できるはずです。

18

link that Zach Lipton のコメントごとに、net-sshのダウングレードを必要としない回避策があります。このコードをconfig/deploy.rbに配置します。

set :ssh_options, {
  config: false
  #Other options...
}

それをした後、別のエラーが発生しました。Error reading response length from authentication socket.その解決策が見つかりました here 。 Bashプロンプトで次のコマンドを実行します。

$ eval $(ssh-agent)
$ ssh-add
11
Scott Weldon

Capistrano Net :: SSH :: AuthenticationFailed:ユーザーdeployer @ IPの認証に失敗すると、同じ問題が発生しました。

ssh-copy-id deployer @ ip

これにより、サーバーにキーが追加され、パスワードなしでログインできます。

8
Anbazhagan p

Net-sshバージョンを2.8.1にアップグレードすると、問題が解決します。彼らは、2014年2月19日にこの問題やその他の問題を修正するバージョンバンプをリリースしました。

  1. 現在のnet-ssh gemをアンインストールします(gem install net-ssh -v 'version')
  2. これをGemfileに貼り付けるだけです:

    gem 'net-ssh'、 '〜> 2.8.1'、:git => " https://github.com/net-ssh/net-ssh "

  3. バンドルインストールを実行する

8
CezarBastos

最初に、次のコマンドで証明書(file.pem)を使用してサーバーに接続してみてください。

ssh -i "file.pem" user@yourServerIp

次に、cap production deployを実行してみてください。それは私のためにエラーを解決しました。証明書の期限が切れたためだと思います。

1
Boomerange

このスニペットは私のために働く:

group :development do
  #.....
  gem 'capistrano', "~> 2.15"
  gem "net-ssh", "~> 2.7.0"
  #.....
end
1
Muntasim
set :ssh_options, {
 verbose: :debug
}

...とても役立ちます!

puttygenを使用して公開キーと秘密キーを生成し、<somename>.id_rsaという名前のOpenSSHとして秘密キーをエクスポートするという問題がありました。 <somename>.id_rsa.pubという名前で保存された公開キー。

(!)puttygenが保存する公開鍵は、PEMではなくRFC 4716形式です。公開鍵ファイルには、publicの代わりにpub接尾辞を使用します-

1
vellotis

上記のすべてのソリューションが機能しない場合は、net-sshホスト接続が原因で問題に直面している可能性があるため、システムを再起動してください。再起動してデプロイメントコマンドを入力すると、既知のホストにIDを追加するよう求められます。

0
Jaswinder