代码之家  ›  专栏  ›  技术社区  ›  qpi

为什么不支持密钥类型ecdsa-sha2-nistp256?

  •  2
  • qpi  · 技术社区  · 7 年前

    I'am trying to use ruby gem我正在尝试使用ruby gem net-ssh 并接收下面描述的错误

    jruby-9.1.15.0 :001 > require "net/ssh"
     => true 
    jruby-9.1.15.0 :002 > Net::SSH.start('myhost.dev', 'username' password: 'password', verbose: Logger::DEBUG){|ssh| puts ssh.exec!('hostname')}
    D, [2018-01-17T14:24:29.633089 #26123] DEBUG -- net.ssh.transport.session[7d0]: establishing connection to myhost.dev:22
    D, [2018-01-17T14:24:29.884816 #26123] DEBUG -- net.ssh.transport.session[7d0]: connection established
    I, [2018-01-17T14:24:29.888234 #26123]  INFO -- net.ssh.transport.server_version[7d2]: negotiating protocol version
    D, [2018-01-17T14:24:29.888926 #26123] DEBUG -- net.ssh.transport.server_version[7d2]: local is `SSH-2.0-Ruby/Net::SSH_4.2.0 java'
    D, [2018-01-17T14:24:29.952538 #26123] DEBUG -- net.ssh.transport.server_version[7d2]: remote is `SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8'
    NotImplementedError: unsupported key type `ecdsa-sha2-nistp256'
            from /home/qpi/.rvm/gems/jruby-9.1.15.0@some_gem/gems/net-ssh-4.2.0/lib/net/ssh/buffer.rb:286:in `read_keyblob'
    

    从引发了错误 buffer.rb:286:in read_keyblob . Here 引起错误的代码部分

    unless defined?(OpenSSL::PKey::EC)
        raise NotImplementedError, "unsupported key type `#{type}'"
    

    好啊让我们检查,定义 OpenSSL::PKey::EC 是否:

    jruby-9.1.15.0 :003 > defined?(OpenSSL::PKey::EC) ? 'defined' : 'not defined'
     => "defined"
    

    我做错了什么?

    当我使用 ruby (不是 jruby ),一切正常

    1 回复  |  直到 7 年前
        1
  •  3
  •   user608800    7 年前

    这不是一个真正的解决方案,但我找到了一种可以帮我解决问题的方法。

    https://github.com/jruby/jruby-openssl/issues/105

    简而言之,在您的Net::SFTP之前。开始,放这两行。

    Net::SSH::Transport::Algorithms::ALGORITHMS.values.each { |algs| algs.reject! { |a| a =~ /^ecd(sa|h)-sha2/ } } Net::SSH::KnownHosts::SUPPORTED_TYPE.reject! { |t| t =~ /^ecd(sa|h)-sha2/ }

    你的问题应该解决了。

    推荐文章