我正在使用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