Java 木卫二号
我正在使用ganymed SSH2 java库使用公钥身份验证连接到服务器。 我已经创建了公钥/私钥对,并将公钥(mykey.pub)上载到我的服务器的/.ssh2目录中。我在本地计算机上有私钥 密钥信息:2048位dsa密钥对(ssh2) 我正在做这样的事情:Java 木卫二号,java,ssh,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 need
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格式的私钥。您可以自己看到密钥不是预期格式。您是如何生成它的?您可以自己看到密钥不是预期的格式。您是如何生成的?标题“BEGIN SSH2 ENCRYPTED PRIVATE KEY”表示您的私钥是由专有ssh系统从ssh.com生成的 还有比这更好的图书馆吗 如果您的密钥未加密,JSch将接受此密钥。标题“BEGIN SSH2 ENCRYPTED PRIVATE key”(开始SSH2加密私钥)表示您的私钥是由专有ssh系统从ssh.com生成的 还有比这更好的图书馆吗
如果您的密钥未加密,JSch将接受此密码。您可以发布您的密钥文件。。。可能用密钥替换实际密钥。你能发布你的密钥文件吗。。。可能用钥匙替换实际钥匙。