Capistrano SSH::AuthenticationFailed, not prompting for password

35,671

Solution 1

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.

Solution 2

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.

Solution 3

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

Solution 4

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

Solution 5

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.

Share:
35,671
Sparkmasterflex
Author by

Sparkmasterflex

Updated on July 09, 2022

Comments

  • Sparkmasterflex
    Sparkmasterflex almost 2 years

    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 [email protected])
    connection failed for: sub.example.com (Net::SSH::AuthenticationFailed: Authentication failed for user [email protected])
    

    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?

  • Momer
    Momer about 10 years
    Anyone else who runs into this should be aware that locking net-ssh at 2.7.0 and net-ssh-gateway at 1.2.0 worked for me.
  • ZhukV
    ZhukV about 10 years
    After remove, i have a error: Could not find 'net-ssh' (>= 2.0.14) among 14 total gem(s) (Gem::LoadError)
  • aruanoc
    aruanoc about 10 years
    After you uninstall net-ssh 2.8.0, make sure you have another version installed to satisfy other gems dependencies, like 2.7.0
  • jcroll
    jcroll about 10 years
    So for instance run gem install net-ssh -v 2.7
  • Fabian Winkler
    Fabian Winkler about 10 years
    I added gem 'net-ssh', '~>2.7.0' next to gem 'capistrano', '~>2.15.5' in my Gemfile and ran bundle update afterwards.
  • Giacomo1968
    Giacomo1968 about 10 years
    Your gut instinct to uninstall Net-SSH version 2.8.0 is good. But the problem is if there isn’t another lower-number version to use, things will break. Such a scenario can come form someone who just installed Net-SSH recently without any other version present. The best version to solve this issue is Net-SSH version 2.7.0 and that should be installed after version 2.8.0 is uninstalled. Now when is 2.8.1 going live already to fix this?
  • kaizenCoder
    kaizenCoder about 10 years
    Where is the Gemfile located on a Mac?
  • Sparkmasterflex
    Sparkmasterflex about 10 years
    Your Gemfile is located in the root of your Rails App. If you're using Capistrano outside of a rails app then you'll just need to handle this w/o bundler gem uninstall ...
  • Danny
    Danny almost 10 years
    on mac osx, you may need to first brew install ssh-copy-id
  • Kleber S.
    Kleber S. almost 10 years
    This way is so much easier. Always use this technic. :)
  • aqingsao
    aqingsao over 9 years
    I followed the steps and it printed "Using net-ssh 2.7.0", but I still got error: ruby-2.1.2/lib/ruby/2.1.0/rubygems/dependency.rb:298:in `to_specs': Could not find 'net-ssh' (>= 2.8.0) - did find: [net-ssh-2.7.0] (Gem::LoadError)
  • juanitogan
    juanitogan over 9 years
    This is not relevant to the question. Believe it or not, active password protection is a requirement in some organizations.
  • juanitogan
    juanitogan over 9 years
    Yet, it was net-ssh-2.9.1 that broke this for me. So, if they fixed it in 2.8.1, they broke it again. Reverting to an older version fixed it.
  • Omn
    Omn over 9 years
    This is still a problem through net-ssh 2.9.1 butnet-ssh 2.9.2 (when it is released) does prompt for password again. It doesn't however, use capistrano's :password parameter. That still only works in 2.7
  • Peter
    Peter about 9 years
    this fixed the issue for me
  • avjaarsveld
    avjaarsveld about 4 years
    Just running ssh-add and trying again worked for me. Thanks