web-dev-qa-db-fra.com

Capistrano SSH :: AuthenticationFailed, ne demande pas de mot de passe

J'utilise capistrano avec succès depuis un certain temps maintenant et tout à coup dans chaque projet, j'ai perdu la capacité de déployer.

Environnement:

  • oS X Mavericks)
  • Ruby 1.9.3p194
  • rvm (localement, pas sur le serveur)
  • Rails 3.2 et plus
  • RubyGems 1.8.25

Je n'utilise pas rsa_keys ou tout ce que je veux que capistrano demande pour l'utilisateur et le mot de passe. Soudain, il a décidé de ne pas demander de mot de passe, mais demande un utilisateur. Ensuite, il revient en arrière et me donne l'erreur suivante.

[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])

Cela s'est produit sur mon ordinateur portable personnel et mon iMac au travail. Cela se produit lors du déploiement sur deux serveurs différents (les deux Linux)

Je suis complètement perdu ici. Des idées?

52
Sparkmasterflex

Deviner! Apparemment, ce problème était lié à net-ssh bijou. J'avais installé la version 2.8.0 récemment avec quelques mises à jour de mon environnement de développement et c'était la cause.

Je ne sais pas pourquoi cela a échoué, mais gem uninstall net-ssh -v 2.8.0< l'a corrigé pour moi.

Si quelqu'un sait réellement pourquoi il s'agit d'un problème ou comment je peux corriger ce problème avec la nouvelle version de net-ssh Je serais intéressé de l'entendre.

94
Sparkmasterflex

La réponse peut casser votre Rails app en raison des dépendances de gemmes.

Le problème est avec net-ssh comme il a été correctement répondu par Sparkmasterflex , mais bien que cela fasse fonctionner capistrano, cela peut casser votre Rails app:

Ces étapes ont corrigé à la fois capistrano et Rails pour moi ...

  1. Dans votre Gemfile, ajoutez gem 'net-ssh', '2.7.0'
  2. Courir bundle update net-ssh
  3. Exécutez bundle (juste pour être sûr que tout fonctionne bien "
  4. Courir gem uninstall net-ssh -v 2.8.0

Si vous êtes un utilisateur Rails, vous devriez maintenant pouvoir exécuter à la fois le serveur Rails et capistrano).

18
creativetechnologist

J'ai une solution de contournement qui ne nécessite pas de rétrogradation net-ssh, par un commentaire sur le lien que Zach Lipton a posté. Placez ce code dans config/deploy.rb:

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

Après cela, j'ai eu une autre erreur, Error reading response length from authentication socket. J'ai trouvé la solution ici . Exécutez ces commandes à votre invite Bash:

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

J'ai eu le même problème lors du déploiement à l'aide de capistrano Net :: SSH :: AuthenticationFailed: l'authentification a échoué pour l'utilisateur deployer @ IP

déployeur ssh-copy-id @ ip

Cela ajoutera vos clés au serveur et vous pourrez vous connecter sans mot de passe.

8
Anbazhagan p

La mise à niveau de votre version net-ssh vers 2.8.1 résoudra le problème. Ils ont publié une version bump le 19 février 2014 qui corrige ce problème et d'autres.

  1. Désinstallez votre gem net-ssh actuel (gem install net-ssh -v 'version')
  2. Collez-le simplement sur votre Gemfile:

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

  3. Exécutez l'installation de l'ensemble

8
CezarBastos

Essayez d'abord de vous connecter à votre serveur avec un certificat (file.pem) avec cette commande:

ssh -i "file.pem" user@yourServerIp

Essayez ensuite d'exécuter le déploiement de la production de plafonds. Cela a résolu l'erreur pour moi. Je pense que c'est parce que le délai pour le certificat a expiré.

1
Boomerange

Cet extrait fonctionne pour moi:

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

... aide beaucoup!

J'ai rencontré un problème en générant mes clés publiques et privées avec puttygen et en exportant la clé privée sous OpenSSH avec le nom <somename>.id_rsa. Une clé publique enregistrée avec le nom <somename>.id_rsa.pub.

(!) La clé publique que puttygen enregistre est au format RFC 4716 et non PEM. Utilisez le suffixe public au lieu de pub pour le fichier de clé publique-

1
vellotis

Si toutes les solutions ci-dessus ne fonctionnent pas, veuillez redémarrer votre système car vous pourriez être confronté au problème en raison des connexions hôte net-ssh.Lorsque vous redémarrez et entrez la commande de déploiement, il vous demandera d'ajouter l'identité aux hôtes connus.

0
Jaswinder