しばらくの間、私はcapistranoを正常に使用してきましたが、展開する能力を失ったすべてのプロジェクトで突然です。
環境:
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)
私はここで完全に迷っています。何か案は?
理解した!どうやらこの問題はnet-ssh
gem。最近、バージョン2.8.0をインストールし、開発環境にいくつかの更新を加えました。これが原因でした。
なぜ失敗したのかわかりませんが、gem uninstall net-ssh -v 2.8.0<
私のためにそれを修正しました。
なぜこれが問題なのか、または新しいバージョンのnet-ssh
聞いてみたい。
答えは、あなたのRailsアプリを壊す可能性があります。
問題は Sparkmasterflex で正解されたnet-sshにありますが、これはcapistranoが正常に動作するようになりますが、Rails app:
これらの手順により、capistranoとRails for me ...
gem 'net-ssh', '2.7.0'
を追加しますbundle update net-ssh
を実行しますbundle
を実行します(すべてが正常に機能していることを確認するためだけです)gem uninstall net-ssh -v 2.8.0
を実行しますRailsユーザーの場合、Railsサーバーとcapistranoの両方を実行できるはずです。
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
Capistrano Net :: SSH :: AuthenticationFailed:ユーザーdeployer @ IPの認証に失敗すると、同じ問題が発生しました。
ssh-copy-id deployer @ ip
これにより、サーバーにキーが追加され、パスワードなしでログインできます。
Net-sshバージョンを2.8.1にアップグレードすると、問題が解決します。彼らは、2014年2月19日にこの問題やその他の問題を修正するバージョンバンプをリリースしました。
これをGemfileに貼り付けるだけです:
gem 'net-ssh'、 '〜> 2.8.1'、:git => " https://github.com/net-ssh/net-ssh "
バンドルインストールを実行する
最初に、次のコマンドで証明書(file.pem)を使用してサーバーに接続してみてください。
ssh -i "file.pem" user@yourServerIp
次に、cap production deployを実行してみてください。それは私のためにエラーを解決しました。証明書の期限が切れたためだと思います。
このスニペットは私のために働く:
group :development do
#.....
gem 'capistrano', "~> 2.15"
gem "net-ssh", "~> 2.7.0"
#.....
end
set :ssh_options, {
verbose: :debug
}
...とても役立ちます!
puttygen
を使用して公開キーと秘密キーを生成し、<somename>.id_rsa
という名前のOpenSSHとして秘密キーをエクスポートするという問題がありました。 <somename>.id_rsa.pub
という名前で保存された公開キー。
(!)puttygenが保存する公開鍵は、PEMではなくRFC 4716形式です。公開鍵ファイルには、public
の代わりにpub
接尾辞を使用します-
上記のすべてのソリューションが機能しない場合は、net-sshホスト接続が原因で問題に直面している可能性があるため、システムを再起動してください。再起動してデプロイメントコマンドを入力すると、既知のホストにIDを追加するよう求められます。