java - ganymed SSH2 java

标签 java ssh

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

key 信息:2048 位 dsa key 对 (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 ----

解决方案:

我解决了问题, key 必须转换为 OPENSSH 格式(我使用 puttygen 来实现)。该java库仅接受openssh格式的私钥。

最佳答案

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

Is there any other library that works better than this?

如果您的 key 未加密,JSch 将接受它。

关于java - ganymed SSH2 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11747341/

相关文章:

java - 如何抛出 ArrayIndexOutOfBoundsException?

java - JSP Servlet session invalidate() 不会使 session 为空

java - 获取数组时出错

c# - 如何从 C# 程序员的角度为 Java 评估做准备?

linux - 从另一个 linux 服务器连接 linux 平台中的 postgres 服务器

linux - Kerberos 和 ssh 多重身份

java - 如何将 List 包装为 Jackson 生成的 JSON 中的顶级元素

php - PhpStorm中如何设置SSH代理用户连接MySQL?

python - 连接到hadoop数据库表

linux - SSH : Copy files without password when using public key authentication.