【问题标题】:Ruby-SSH: Unable to use any of the Rye::Box::Cmd commands with fingerprint/HostKeyMismatch errorsRuby-SSH:无法使用任何带有指纹/HostKeyMismatch 错误的 Rye::Box::Cmd 命令
【发布时间】:2013-05-03 18:57:58
【问题描述】:

我正在使用 Rye ruby​​ gem 通过 SSH 连接到服务器,但我遇到了一个问题,如果我尝试从那里运行任何命令,我会收到以下错误:

rbox = Rye::Box.new(server, :user => "user", :password => "password")

rbox.ls

指纹 d3:a1:15:ab:05:0d:4e:45:9f:b3:94:14:ca:11:d6:be 与“server,10.10.10.2”不匹配 继续?

Net::SSH::HostKeyMismatch: Net::SSH::HostKeyMismatch

    from C:/jruby-1.6.8/lib/ruby/gems/1.8/gems/rye-0.9.8/lib/rye/box.rb:678:in `connect'
    from C:/jruby-1.6.8/lib/ruby/gems/1.8/gems/rye-0.9.8/lib/rye/box.rb:778:in `run_command'
    from C:/jruby-1.6.8/lib/ruby/gems/1.8/gems/rye-0.9.8/lib/rye/cmd.rb:106:in `which'
    from (irb):31:in `evaluate'
    from org/jruby/RubyKernel.java:1112:in `eval'
    from C:/jruby-1.6.8/lib/ruby/1.8/irb.rb:158:in `eval_input'
    from C:/jruby-1.6.8/lib/ruby/1.8/irb.rb:271:in `signal_status'
    from C:/jruby-1.6.8/lib/ruby/1.8/irb.rb:270:in `signal_status'
    from C:/jruby-1.6.8/lib/ruby/1.8/irb.rb:155:in `eval_input'
    from org/jruby/RubyKernel.java:1439:in `loop'
    from org/jruby/RubyKernel.java:1212:in `catch'
    from C:/jruby-1.6.8/lib/ruby/1.8/irb.rb:154:in `eval_input'
    from C:/jruby-1.6.8/lib/ruby/1.8/irb.rb:71:in `start'
    from org/jruby/RubyKernel.java:1212:in `catch'
    from C:/jruby-1.6.8/lib/ruby/1.8/irb.rb:70:in `start'
    from C:\jruby-1.6.8\bin\irb:13:in `(root)'

我已尝试从当前用户主目录 (~/.ssh/known_hosts) 中删除“known_hosts”文件,但仍因同样的问题而失败。 我尝试过与不同的用户联系,但也遇到了同样的问题。

奇怪的是那个指纹总是显示相同的值,所以不确定它来自哪里。

rbox.keys -> 不返回任何内容,只返回 []

rye keys -> NameError: undefined local variable or method `keys' for main:Object

rbox.host_key -> 进程无法访问该文件,因为它正被另一个进程使用。 => [, , 1, ]

知道什么可能导致这个问题,我还能尝试解决或解决它吗?

非常感谢!

【问题讨论】:

    标签: ruby ssh ssh-keys


    【解决方案1】:

    这个库基于 Ruby 的 Net::SSH,它在 ~/.ssh/known_hosts 和 /etc/ssh/knowh_hosts 中寻找缓存的主机密钥。 有关详细信息,请参阅有关 Net::SSH::KnownHosts 的文档。

    【讨论】:

    • 在这种情况下,我删除了 ~/.ssh/known_hosts 和 /etc/ssh/known_hosts 甚至不存在,所以不确定它从哪里选择这些值?
    【解决方案2】:

    事实证明,即使您从以下位置连接:

    *Local_pc => *Middle_server => *Final_server

    不管你在这 2 个服务器中的哪一个,似乎使用的 'known_hosts' 文件不是这两个服务器中的任何一个,它是你的本地 known_hosts 文件。

    因此,您可以删除最终失败的特定主机的条目,或者创建以下 .ssh/config 文件以忽略主机密钥:

    Host *
    UserKnownHostsFile /dev/null
    StrictHostKeyChecking no
    

    该配置文件位于 Windows 中的以下路径:

    C:\Users\<your_user>\.ssh\config
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 2020-02-15
      • 1970-01-01
      相关资源
      最近更新 更多