简体   繁体   中英

Capistrano SSH::AuthenticationFailed, not prompting for password

I've been using capistrano successfully for a while now and all of a sudden in every project I've lost the ability to deploy.

Environment:

  • os X (Mavericks)
  • ruby 1.9.3p194
  • rvm (locally, not on server)
  • rails 3.2 and up
  • RubyGems 1.8.25

I'm not using rsa_keys or anything I want capistrano to prompt for user and password. Suddenly it has decided not to ask for a password, but does ask for user. Then it rolls back and gives me the following error.

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

This has occurred on my personal laptop and my iMac at work. It occurs when deploying to two different servers (both linux)

I'm completely at a loss here. Any ideas?

Figured it out! Apparently this issue was with net-ssh gem. I had version 2.8.0 installed recently with some updates to my development environment and was the cause.

I'm not sure why it was failing, but gem uninstall net-ssh -v 2.8.0< fixed it for me.

If anyone actually knows why this was an issue or how I can correct this issue with the newer version of net-ssh I'd be interested to hear it.

The answer may break your rails app due to gem dependancies.

The issue is with net-ssh as was correctly answered by Sparkmasterflex , however whilst this will get capistrano working ok it may break your rails app:

These steps fixed both capistrano and rails for me ...

  1. In your Gemfile add gem 'net-ssh', '2.7.0'
  2. Run bundle update net-ssh
  3. Run bundle (just to be sure everything is working ok'
  4. Run gem uninstall net-ssh -v 2.8.0

If you are a rails user you should now be able to run both the rails server and capistrano.

I have a workaround that doesn't require downgrading net-ssh , per a comment at the link that Zach Lipton posted. Place this code in config/deploy.rb :

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

After I did that, I got another error, Error reading response length from authentication socket. Found the solution to that here . Execute these commands at your Bash prompt:

$ eval $(ssh-agent)
$ ssh-add

Upgrading your net-ssh version to 2.8.1 will solve the problem. They released a version bump in 19th february 2014 that fix this and other problems.

  1. Uninstall your current net-ssh gem (gem install net-ssh -v 'version')
  2. Just paste this on your Gemfile:

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

  3. Run bundle install

I had the same problem while deploying using capistrano Net::SSH::AuthenticationFailed: Authentication failed for user deployer@IP

ssh-copy-id deployer@ip

This will add your keys to server and you can login without password.

This snippet works for me:

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

... helps a lot!

I had an issue that I generated my public and private keys with puttygen and exported private key as OpenSSH with name <somename>.id_rsa . An then saved public key with name <somename>.id_rsa.pub .

( ! ) The public key puttygen saves is in RFC 4716 format not PEM. Use public suffix instead of pub for public key file-

First try to connect to your server with certificate (file.pem) with this command:

ssh -i "file.pem" user@yourServerIp

Then try to run cap production deploy. It solved error for me. I think it is because time limit for certificate expired.

如果以上所有解决方案都不起作用,请重新启动系统,因为net-ssh主机连接可能会遇到问题。当您重新启动并输入部署命令时,它会要求将身份添加到已知主机。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM