【问题标题】:Ruby script Net::SSH::HostKeyMismatch but ssh worksRuby 脚本 Net::SSH::HostKeyMismatch 但 ssh 有效
【发布时间】:2018-05-17 05:20:50
【问题描述】:

我可以通过 ssh 连接到我的 aws 网络上的远程主机,但在 ruby​​ 脚本中使用 net/ssh 失败。我的 gem 是 Ubuntu 16.04 上的 net-ssh(4.2.0)。即使使用 non_interactive => false,它也不会提示输入密码。

错误:

用户 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

【问题讨论】:

  • 你的问题是什么?
  • 错误显示我的问题。

标签: ruby net-ssh


【解决方案1】:

keys 数组需要指向您的私钥。 authorized_keys 是允许登录当前主机的密钥的公共指纹。此外,您似乎为host_key 输入了私钥类型。

【讨论】:

  • ssh-rsa 不是主机密钥,而是一种密钥类型。删除它。
【解决方案2】:

这是我的解决方案:

#!/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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2012-04-02
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多