ganymed SSH2 java

时间:2012-07-31 19:14:09

标签: java ssh

我使用ganymed SSH2 java库连接到使用公钥认证的服务器。 我创建了公钥/私钥对,并将公钥(mykey.pub)上传到我在/.ssh2目录中的服务器上。我在本地机器上有私钥。

密钥信息: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, username@host, Tue Jul 31 2012 13:12:48 -\
0500"
KEY   
---- END SSH2 ENCRYPTED PRIVATE KEY ----

解决方案:

我想出了问题,关键必须转换为OPENSSH格式(我使用了puttygen)。这个java库只接受openssh格式的私钥。

2 个答案:

答案 0 :(得分:2)

标题“BEGIN SSH2 ENCRYPTED PRIVATE KEY”表示您的私钥是由ssh.com的专有ssh系统生成的。

  

还有其他图书馆比这更好吗?

如果你的密钥没有加密,JSch会接受它。

答案 1 :(得分:1)

您可以亲眼看到密钥不符合预期格式。你是怎么生成它的?