![]() |
|||||||
対象: net-sshの公開鍵認証でDSAErrorを回避する公開鍵認証を行っているサーバにnet-sshでsshしようとして以下のようなエラーに遭遇したことはないだろうか。 /usr/local/jruby-1.5.6/lib/ruby/gems/1.8/gems/net-ssh-2.0.23/lib/net/ssh/transport/openssl.rb:116:in `ssh_do_sign': bad sig size (OpenSSL::PKey::DSAError) このエラーはsshの公開鍵にDSAを使用しており、かつJRubyでnet-sshを使用してsshしたときに発生(Rubyは問題ない)する。エラーの原因はnet-sshのOpenSSLモジュールのDSA.ssh_do_signメソッド内で、a1sig.value[n].valueが返すオブジェクトがRubyの場合はOpenSSL::BNであるのに対して、JRubyの場合だとBignumを返すことにある。このため、OpenSSL::PKey::DSAError bas sig sizeとなってしまう。 この問題の解決策は2つある。
1の場合はRSAでクライアントの鍵を再作成して該当サーバに設定すればOK。どうしても1が無理ならば、net-sshインストール先の該当モジュール(例えば/usr/local/jruby-1.5.6/lib/ruby/gems/1.8/gems/net-ssh-2.0.23/lib/net/ssh/transport/openssl.rb)のssh_do_signメソッドをこんな風に書き換える。
(2010/12/21)
Copyright(C) 2004-2014 モバイル開発系(K) All rights reserved.
[Home]
|