Ruby скрипт Net :: SSH :: HostKeyMismatch но ssh работает - PullRequest
0 голосов
/ 14 мая 2018

Я могу подключиться к ssh на удаленном хосте в моей сети aws, но использование net / ssh завершается неудачно в сценарии ruby.мой драгоценный камень - net-ssh (4.2.0) на Ubuntu 16.04.Пароль не запрашивается даже при non_interactive => false.

error:

Ошибка аутентификации для пользователя Net :: SSH :: AuthenticationFailed

Почему этот код не работает?

#!/usr/bin/env ruby
require 'rubygems'
require 'net/ssh'

HOST = 'myhost'

Net::SSH.start(HOST,
:auth_methods => ['publickey'],
:passphrase => 'mypassphrase',
:non_interactive => true,
:host_key => "ssh-rsa",
:keys => [ '/home/markhorrocks/.ssh/id_rsa' ]
 ) do |session|
  output = session.exec!('ls')
  puts output
 end

После редактирования моего кода к этому я получаю ошибку

(Net :: SSH :: HostKeyMismatch)

HOST = 'myhost'
USER = 'markhorrocks'

Net::SSH.start(HOST, USER,
:auth_methods => ['publickey'],
:passphrase => 'mypassphrase',
:non_interactive => true,
:host_key => "ssh-rsa",
  :encryption => "blowfish-cbc",
:keys => [ '/home/markhorrocks/.ssh/id_rsa' ],
:port => '1234',
:forward_agent => true,
  :compression => "zlib@openssh.com"
 ) do |session|
  output = session.exec!('ls')
  puts output
 end

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вот мое решение:

#!/usr/bin/env ruby

require 'net/ssh'

HOST = 'myhost'
USER = 'markhorrocks'

Net::SSH.start(HOST, USER,
:auth_methods => ['publickey'],
:passphrase => 'mypassphrase',
:non_interactive => true,
:host_key => "ssh-rsa",
:encryption => "blowfish-cbc",
:keys => [ '/home/markhorrocks/.ssh/id_rsa' ],
:port => '1234',
:forward_agent => true,
:verify_host_key => false,
:compression => "zlib@openssh.com"
 ) do |session|
       begin
          rescue Net::SSH::HostKeyMismatch => e
          puts "remembering new key: #{e.fingerprint}"
          e.remember_host!
          retry
       end

  output = session.exec!('ls')
  puts output
 end
0 голосов
/ 15 мая 2018

Массив keys должен указывать на ваш закрытый ключ (и). authorized_keys - это открытые отпечатки пальцев для ключей, которым разрешено входить на текущий хост. Также вы, кажется, указали тип закрытого ключа для host_key.

...