Ruby-SSH:无法使用任何带有fingerprint / HostKeyMismatch错误的Rye :: Box :: Cmd命令

时间:2013-05-03 09:36:07

标签: ruby ssh ssh-keys

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

  

rbox = Rye :: Box.new(服务器,:用户=>“用户”,:密码=>“密码”)

     

rbox.ls

     

指纹d3:a1:15:ab:05:0d:4e:45:9f:b3:94:14:ca:11:d6:与“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 - >不返回任何东西,只是[]

     

黑麦键 - > NameError:未定义的局部变量或main的方法`keys':Object

     

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

任何想法可能导致这个问题,还有什么可以尝试解决它或解决它?

非常感谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

事实证明,即使您从以下地址连接:

* Local_pc => * Middle_server => * Final_server

在这两台服务器中的哪一台并不重要,似乎所使用的'known_hosts'文件不是这两台服务器中的任何一台,它是你的LOCAL known_hosts文件。

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

Host *
UserKnownHostsFile /dev/null
StrictHostKeyChecking no

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

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