作成した.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);
はこれで誰も経験していますか?
コメントが足りないのは残念ですが、これをどうやって取得するかはまだ分かっていますが、まだコメントを追加していません。
ご協力いただきありがとうございます。
乾杯 アーミン
こんにちはOmikron:あなたのケース(暗号化されていないPEM)で
。あなたのフィードバックに感謝します。私はちょうどあなたが使用できる文字列/バイトのpubkey/passphrase paramsに関して混乱していました。何らかの理由で私はこれによって混乱しました。私はいつもいくつかの奇妙なエラーを受け取った、おそらく私は文字列として間違ったユーザーを得た。とにかく、あなたのフィードバックのために多くの感謝。これですべてが今働いています。乾杯 – ArBei