我使用ganymed SSH2 Java庫連接到使用公鑰認證的服務器。 我已創建公鑰/私鑰對,並上傳在/.ssh2目錄中的公鑰(mykey.pub)到我的服務器。我在本地機器上有私鑰。ganymed SSH2的Java
信息上的按鍵:2048位DSA密鑰對(SSH2)
我做這樣的事情:
File keyfile = new File("C:\\keys\\mykey");
String keyfilePass = "a"; // will be ignored if not needed
try
{
Connection conn = new Connection(hostname);
conn.connect();
boolean isAuthenticated = conn.authenticateWithPublicKey("myusername", keyfile, keyfilePass);
//I get an error at this line
我得到的錯誤是:
Caused by: java.io.IOException: Invalid PEM structure, '-----BEGIN...' missing
at ch.ethz.ssh2.crypto.PEMDecoder.parsePEM(PEMDecoder.java:138)
能有人幫忙嗎? 有沒有其他圖書館比這更好的作品?
編輯:密鑰文件
---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
Subject: username Comment: "2048-bit dsa, [email protected], Tue Jul 31 2012 13:12:48 -\
0500"
KEY
---- END SSH2 ENCRYPTED PRIVATE KEY ----
SOLUTION:
我想這個問題了,關鍵還得轉換爲OpenSSH格式(我曾經爲的puttygen)。這個java庫只接受openssh格式的私鑰。
您可以發佈您的密鑰文件...也許替換*鍵實際鍵*。 – Rcunn87 2012-07-31 19:34:49
我添加了我的密鑰文件。 – marcwho 2012-07-31 19:49:31