我正在使用ganymed SSH2 java库连接到使用公钥身份验证的服务器。我已经创建了公钥/私钥对,并将公钥(mykey.pub)上传到我的服务器的/.ssh2目录中。我在本地机器上有私钥。
密钥信息:2048位动态加速密钥对(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格式的私钥。
发布于 2012-08-01 07:16:03
您可以自己看到密钥的格式不是预期的格式。你是如何生成它的?
发布于 2012-08-01 10:19:12
标题"BEGIN SSH2 ENCRYPTED PRIVATE KEY“表示您的私钥是由ssh.com的专有ssh系统生成的。
有没有比这个更好的库呢?
如果您的密钥未加密,JSch将接受它。
https://stackoverflow.com/questions/11747341
复制相似问题