设置net-ssh连接时出现SUPPORTED_TYPE错误

时间:2012-05-24 19:10:44

标签: ruby cygwin net-ssh

之前有没有人见过这个错误?我无法在源代码中找到对SUPPORTED_TYPE的任何引用...

IRB(主):013:0> connection = Net :: SSH.start('host','user',:password =>'password') NameError:未初始化的常量Net :: SSH :: KnownHosts :: SUPPORTED_TYPE 来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:117:in“keys_for”         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:105:in` each_line'         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:105:in`key键_for'         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:103:in“open”         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:103:in`key键_for'         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:33:in`search_in'         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:33:in`map'         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:33:in`search_in'         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:27:in`search_for'         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/transport/algorithms.rb:237:in“prepare_preferred_algorithms!”         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/transport/algorithms.rb:120:in`initialize'         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/transport/session.rb:79:in“new”         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/transport/session.rb:79:in`initialize'         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh.rb:186:in“new”         来自/usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh.rb:186:in“start”         来自(irb):13         来自/usr/lib/ruby/site_ruby/1.8/rubygems/specification.rb:1313

3 个答案:

答案 0 :(得分:4)

更简单的解决方案是使用this forked version net-ssh修复该问题(官方net-ssh gem的下一个版本也应该修复它),如here所述。

如果您在通过capistrano(我今天使用)部署时遇到此问题,您可以通过Gemfile从github安装this net-ssh version,然后使用bundle exec cap deploy调用上限。

放入Gemfile gem 'net-ssh', :git => 'git://github.com/nessche/net-ssh.git'

答案 1 :(得分:2)

这是一个似乎已经在5月24日更新2.5.0或2.5.1引入net-ssh gem的问题。你可以在这里找到常量SUPPORTED_TYPE:

http://net-ssh.github.com/net-ssh/classes/Net/SSH/KnownHosts.html

我不知道所有细节,但到目前为止,已经有一些解决方案。一种是删除您的known_hosts文件(或您尝试从该文件连接的特定主机),并且您可能能够连接,直到该主机再次添加到known_hosts - 如果它在,它将返回相同的错误出于某种原因。

我发现的第二个选项是恢复到宝石版本2.4.0。我已在以下网址提交了该问题的门票:

http://net-ssh.lighthouseapp.com/projects/36253-net-ssh/tickets/58-nameerror-uninitialized-constant-netsshknownhostssupported_type

希望它有所帮助!

编辑:Clarif对此的解决方案看起来更可接受。谢谢,Clarif!

答案 2 :(得分:1)

在关注github上的问题并应用clarif建议的内容之后,我想出了解决问题的方法。

http://tinyurl.com/cxr2xa3