Ошибка SUPPORTED_TYPE при настройке соединения net-ssh

Кто-нибудь видел эту ошибку раньше? Мне не удалось найти ссылку на SUPPORTED_TYPE в источнике...

irb(main):013:0> connection = Net::SSH.start('host', 'user', :password => 'password') NameError: uninitialized constant Net::SSH::KnownHosts::SUPPORTED_TYPE from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:117:in `keys_for' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:105:in `each_line' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:105:in `keys_for' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:103:in `open' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:103:in `keys_for' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:33:in `search_in' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:33:in `map' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:33:in `search_in' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:27:in `search_for' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/transport/algorithms.rb:237:in `prepare_preferred_algorithms!' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/transport/algorithms.rb:120:in `initialize' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/transport/session.rb:79:in `new' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/transport/session.rb:79:in `initialize' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh.rb:186:in `new' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh.rb:186:in `start' from (irb):13 from /usr/lib/ruby/site_ruby/1.8/rubygems/specification.rb:1313

person grumpasaurus    schedule 24.05.2012    source источник


Ответы (3)


Более простое решение — использовать разветвленную версию net-ssh, которая устраняет эту проблему (следующий выпуск официального гема net-ssh также должен это исправить), как описано здесь.

Если у вас возникла эта проблема при развертывании через capistrano (что было у меня сегодня), вы можете установить эту версию net-ssh из github через Gemfile, а затем вызовите cap с помощью bundle exec cap deploy.

Поместите в Gemfile gem 'net-ssh', :git => 'git://github.com/nessche/net-ssh.git'.

person clarif    schedule 24.05.2012
comment
Спасибо! Этот обходной путь помог мне на некоторое время, и похоже, что они довольно быстро выпустили новую официальную жемчужину по предоставленной вами ссылке на github. Версия, в которой есть исправление, — 2.5.2. - person grumpasaurus; 01.06.2012

Это проблема, которая, по-видимому, была введена обновлениями 2.5.0 или 2.5.1 от 24 мая для гема net-ssh. Вы можете найти константу 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 для этого выглядит более приемлемым. Спасибо, Клариф!

person Michael Endsley    schedule 24.05.2012

Изучив проблемы на github, а также применив то, что предложил clarif, я придумал это, которое решило мою проблему.

http://tinyurl.com/cxr2xa3

person pdtpatrick    schedule 25.05.2012