2012-07-31 118 views
0

我使用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格式的私鑰。

+0

您可以發佈您的密鑰文件...也許替換*鍵實際鍵*。 – Rcunn87 2012-07-31 19:34:49

+0

我添加了我的密鑰文件。 – marcwho 2012-07-31 19:49:31

回答

1

你可以看到自己的鑰匙不是預期的格式。你是如何生成它的?

1

頭文件「BEGIN SSH2 ENCRYPTED PRIVATE KEY」表示您的私鑰由ssh.com專有的ssh系統生成。

是否有任何其他庫比這更好的工作?

如果你的密鑰沒有被加密,JSch會接受它。