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-ssh
gem。 我最近安装了2.8.0版本,对我的开发环境进行了一些更新,并且是原因。
我不知道为什么它失败,但gem uninstall net-ssh -v 2.8.0<
解决了我的问题。
如果有人真的知道为什么这是一个问题,或者我可以用更新版本的net-ssh
来解决这个问题,我很乐意听到这个问题。
由于gem的依赖,答案可能会破坏你的Rails应用程序。
问题是net-ssh正确回答Sparkmasterflex ,但是,这将得到capistrano工作好吧,它可能会打破你的rails应用程序:
这些步骤固定了我的capistrano和铁轨…
- 在你的Gemfile中添加gem'net
gem 'net-ssh', '2.7.0'
- 运行
bundle update net-ssh
- 运行
bundle
(只是为了确保一切工作正常“ - 运行
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日发布了一个版本,修复了这个问题和其他问题。
- 卸载你当前的net-ssh gem(gem install net-ssh -v'version')
-
只需将其粘贴到您的Gemfile上:
gem'net-ssh','〜> 2.8.1',::git =>“ https://github.com/net-ssh/net-ssh ”
-
运行软件包安装
我在使用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部署命令时,它会要求将身份添加到已知主机。