我試圖從我創建的.keystore文件獲取私鑰。使用.keystore文件中的私有RSA密鑰與Jsch
到目前爲止,這是工作:
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);
對於的System.out.println(StringWriter的)我得到以下輸出:
----- BEGIN RSA私鑰--- -
私鑰這裏
----- END RSA私鑰-----
我現在想用這個私鑰創建一個到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變量來設置身份?
下面一個例子我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。非常感謝您的反饋。我只是對可以使用的字符串/字節pubkey/passphrase params感到困惑。由於某些原因,我很困惑。在開始時,我總是收到一些奇怪的錯誤,可能是我把錯誤的用戶當作字符串。無論如何,非常感謝您的反饋。有了這一切,現在正在工作。乾杯 – ArBei