我正在使用 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/