java JSCH无效私钥
我正在运行JDK1.7&;使用netbeans 7.2的Windows 7 我已经生成了一个SSH私有&;使用putty keygen的公钥对(SSH2-2048位)。我没有任何私钥密码。 我现在正在尝试使用SFTP连接到一台主机。但当我传递私钥(ppk)以设置标识时,代码返回无效私钥错误。我在WinSCP中使用相同的私钥连接到相同的主机&;它工作得很好。请帮我解决这个错误。 这是我的密码:
JSch jsch = new JSch();
Session session = null;
try {
jsch.addIdentity("D:\\TEMP\\key.ppk");
session = jsch.getSession("tiabscp", "ssiw.support.qvalent.com", 22);
session.setConfig("StrictHostKeyChecking", "no");
//session.setPassword("");
session.connect();
Channel channel = session.openChannel("sftp");
System.out.println("Getting connected");
channel.connect();
System.out.println("connected successfully");
ChannelSftp sftpChannel = (ChannelSftp) channel;
sftpChannel.get("remotefile.txt", "localfile.txt");
sftpChannel.exit();
session.disconnect();
}catch (JSchException e) {
e.printStackTrace();
}catch (SftpException e) {
e.printStackTrace();
}
# 1 楼答案
下面的示例代码可能会对您有所帮助
要创建目录,请执行以下操作:
# 2 楼答案
也许不是你的解决方案,但我在寻找我的问题时发现了这个问题
当JSCH需要私钥文件时,我意外地给出了公钥文件的路径
# 3 楼答案
我在使用JSch使用ppk到ssh时遇到了同样的问题。这可能对某人有用
当使用Putty的ppk文件时,它曾经工作过。但是在JSch中使用相同的方法,它会抛出这个异常
我尝试了几种解决方案。最后,我只是将ppk文件加载到PuTTYgen并保存私钥,该私钥生成了外观类似的(在文本编辑器中)文件,但效果不错
# 4 楼答案
我猜您的密钥不是OpenSSH密钥文件格式。JSch希望私钥采用OpenSSH格式
您可以使用PuTTYgen转换私钥以使用OpenSSH,方法是执行here中描述的步骤:
# 5 楼答案
您可以使用PEMWriter将私钥转换为JSch将接受的PEM格式
下面的示例转换从Java密钥库(JKS)返回的密钥