Capistrano SSH :: AuthenticationFailed,不提示input密码

一段时间以来,我一直在成功地使用capistrano,突然在每个项目中我都失去了部署的能力。

环境:

  • os X(小牛)
  • ruby1.9.3p194
  • rvm(本地,不在服务器上)
  • 导轨3.2及以上
  • RubyGems 1.8.25

我没有使用rsa_keys或任何我想capistrano提示input用户名和密码。 突然它决定不要求密码,而是要求用户。 然后它回滚并给我以下错误。

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

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

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

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

我不知道为什么它失败,但gem uninstall net-ssh -v 2.8.0<解决了我的问题。

如果有人真的知道为什么这是一个问题,或者我可以用更新版本的net-ssh来解决这个问题,我很乐意听到这个问题。

由于gem的依赖,答案可能会破坏你的Rails应用程序。

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

这些步骤固定了我的capistrano和铁轨…

  1. 在你的Gemfile中添加gem'net gem 'net-ssh', '2.7.0'
  2. 运行bundle update net-ssh
  3. 运行bundle (只是为了确保一切工作正常“
  4. 运行gem uninstall net-ssh -v 2.8.0

如果你是一个铁轨用户,你现在应该能够运行rails服务器和capistrano。

我有一个解决scheme,不需要降级net-ssh ,根据Zach Lipton发布的链接评论。 将此代码放置在config/deploy.rb

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

我这样做后,我得到另一个错误, Error reading response length from authentication socket. 在这里find解决scheme。 在Bash提示符下执行这些命令:

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

升级你的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. 运行软件包安装

我在使用capistrano Net :: SSH :: AuthenticationFailed部署时遇到了同样的问题:用户部署程序@ IPvalidation失败

ssh-copy-id deployer @ ip

这将添加您的密钥到服务器,您可以login没有密码。

这段代码适合我:

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

…帮助很大!

我有一个问题,我用puttygen生成我的公钥和私钥,导出私钥为OpenSSH,名称为<somename>.id_rsa 。 然后保存名称为<somename>.id_rsa.pub

(!)公钥puttygen保存为不是PEM格式的RFC 4716格式。 使用public后缀而不是pub作为公钥文件 –

首先尝试使用此命令连接到带有证书(file.pem)的服务器:

 ssh -i "file.pem" user@yourServerIp 

然后尝试运行瓶盖生产部署。 它解决了我的错误。 我认为这是因为证书的时限过期。

如果以上所有解决scheme都不起作用,请重新启动系统,因为可能由于net-ssh主机连接而面临问题。重新启动并input部署命令时,它会要求将身份添加到已知主机。