2017-02-14 44 views
0

作成した.keystoreファイルから秘密鍵を取得しようとしています。Jschでの.keystoreファイルからの秘密RSA鍵の使用

これまでのところ、これが機能している:のSystem.out.println(にStringWriter)については

 try { 
     FileInputStream is = new FileInputStream("C:\\Program Files\\Java\\...mykeystore.keystore"); 

     KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); 
     keystore.load(is, "mypassword".toCharArray()); 
     Key privKey = keystore.getKey("alias", "mypassword".toCharArray()); 

     StringWriter stringWriter = new StringWriter(); 
     JcaPEMWriter pemWriter = new JcaPEMWriter(stringWriter); 
     pemWriter.writeObject(privKey); 
     pemWriter.close(); 
     System.out.println(stringWriter); 

を私は次のような出力が得られます。

----- --- RSA PRIVATE KEYをBEGIN -

PRIVATE KEYはこちら

----- END RSA PRIVATE KEY -----

IS

この秘密鍵を使用して、Unixサーバへのssh接続を作成します。 Unixサーバー側では、公開鍵をauthorized_keyファイルに入れました。

ssh接続ではJSchを使用します。 JSCH - Invalid private keyによると、このキーをPEM形式に変換する必要があります。私はAbdelhameed Mahmoudの例でこれを行いました:

 StringWriter stringWriter = new StringWriter(); 
     JcaPEMWriter pemWriter = new JcaPEMWriter(stringWriter); 
     pemWriter.writeObject(privKey); 
     pemWriter.close(); 
     System.out.println(stringWriter); 
     byte[] privateKeyPEM = stringWriter.toString().getBytes(); 

ここで私は立ち往生しています。

privateKeyPEMバイトオブジェクトはどのように使用できますか? これをjsch.addIdentity()で使用したい

しかし、このbyte [] privateKeyPEM変数を使用してIDを設定する方法を理解できていませんか?

ここに私のJSCHの一部の例:

 JSch jsch = new JSch(); 
     jsch.addIdentity(**What to put here??**); 
     session = jsch.getSession(user, getIP(), getPort()); 
     session.setConfig("PreferredAuthentications", "publickey"); 
     //session.setPassword(pwd); 
     session.setConfig("StrictHostKeyChecking", "no"); 
     session.connect(3000); 

はこれで誰も経験していますか?

コメントが足りないのは残念ですが、これをどうやって取得するかはまだ分かっていますが、まだコメントを追加していません。

ご協力いただきありがとうございます。

乾杯 アーミン

答えて

2

はJSCHドキュメントでこのことについては何もありませんか?

パラメータは次のとおりです。

jsch.addIdentity(user, privateKeyPEM, null, null); 
+0

こんにちはOmikron:あなたのケース(暗号化されていないPEM)で

JSch.addIdentity(String name, byte[] prvkey, byte[] pubkey, byte[] passphrase) 

。あなたのフィードバックに感謝します。私はちょうどあなたが使用できる文字列/バイトのpubkey/passphrase paramsに関して混乱していました。何らかの理由で私はこれによって混乱しました。私はいつもいくつかの奇妙なエラーを受け取った、おそらく私は文字列として間違ったユーザーを得た。とにかく、あなたのフィードバックのために多くの感謝。これですべてが今働いています。乾杯 – ArBei

関連する問題