Capistrano SSH :: AuthenticationFailed,不提示输入密码

Spa*_*lex 52 ruby deployment capistrano ruby-on-rails

我已经成功地使用了capistrano一段时间,并且在每个项目中我突然失去了部署能力.

环境:

  • os X(小牛队)
  • 红宝石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 user@sub.example.com)
connection failed for: sub.example.com (Net::SSH::AuthenticationFailed: Authentication failed for user user@sub.example.com)
Run Code Online (Sandbox Code Playgroud)

这发生在我的个人笔记本电脑和我的iMac上.它部署到两个不同的服务器(两个Linux)时发生

我在这里完全不知所措.有任何想法吗?

Spa*_*lex 94

弄清楚了!显然这个问题与net-sshgem有关.我最近安装了2.8.0版本,对我的开发环境进行了一些更新,这是原因.

我不确定它为什么失败,但gem uninstall net-ssh -v 2.8.0<为我修好了.

如果有人真的知道为什么这是一个问题,或者我如何用更新的版本纠正这个问题net-ssh我会有兴趣听到它.

  • 卸载net-ssh 2.8.0后,请确保安装了其他版本以满足其他gems依赖项,例如2.7.0 (7认同)
  • 我在我的Gemfile中添加了'gem'net-ssh','〜> 2.7.0'`旁边的'gem'capistrano','〜> 2.15.5'`并随后运行了`bundle update`. (6认同)
  • 遇到这种情况的任何其他人都应该知道将net-ssh锁定在2.7.0并将net-ssh-gateway锁定在1.2.0对我有用. (4认同)

cre*_*ist 18

由于宝石依赖性,答案可能会破坏您的rails应用程序.

问题是net-ssh正如Sparkmasterflex正确回答的那样,但是这将使得capistrano工作正常,它可能会打破你的rails应用程序:

这些步骤为我修复了capistrano和rails ...

  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.


Sco*_*don 11

我不要求降级一种变通方法net-ssh,每一个评论的链接扎克·利普顿公布.将此代码放在config/deploy.rb:

set :ssh_options, {
  config: false
  #Other options...
}
Run Code Online (Sandbox Code Playgroud)

在我这样做之后,我又遇到了另一个错误,Error reading response length from authentication socket.这里找到了解决方案.在Bash提示符下执行以下命令:

$ eval $(ssh-agent)
$ ssh-add
Run Code Online (Sandbox Code Playgroud)


小智 8

将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. 运行捆绑安装

  • 然而,net-ssh-2.9.1为我打破了这一点.因此,如果他们将其修复为2.8.1,他们会再次破坏它.恢复到旧版本修复它. (2认同)

Anb*_*n p 8

使用capistrano Net :: SSH :: AuthenticationFailed进行部署时遇到了同样的问题:用户部署者@ IP的身份验证失败

ssh-copy-id deployer @ ip

这会将您的密钥添加到服务器,您无需密码即可登录.

  • 在mac osx上,你可能需要先`brew install ssh-copy-id` (3认同)