Ruby-SSH:无法使用任何Rye::Box::Cmd命令与指纹/HostKeyMismatch错误



我正在使用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.8binirb:13:in `(root)'

我已经尝试删除'known_hosts'文件从当前用户的家(~/.ssh/known_hosts),但仍然失败与同样的问题。我试着连接不同的用户,也出现了同样的问题。

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

rbox。Keys ->不返回任何东西,只返回[]

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

rbox。host_key ->该进程无法访问该文件,因为该文件正在被其他进程使用。=> [,, 1,]

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

多谢!

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

事实证明,即使您从:

连接

*Local_pc => *Middle_server => *Final_server

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

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

Host *
UserKnownHostsFile /dev/null
StrictHostKeyChecking no

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

C:Users<your_user>.sshconfig

最新更新