当前位置: 首页 > 知识库问答 >
问题:

JSCH-无效私钥

秋煌
2023-03-14

我使用NetBeans7.2运行JDK1.7和Windows7,我使用putty-keygen生成了一个SSH私钥和公钥对(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个答案

轩辕佑运
2023-03-14

我猜您的密钥不是OpenSSH密钥文件格式。JSch希望私钥为OpenSSH格式。

您可以使用PuTTYgen将私钥转换为与OpenSSH一起使用,方法如下:

  1. 按Load并选择用PuttyGen创建的私钥。
  2. 输入密码短语以加载密钥。
  3. 从转换菜单中选择导出OpenSSH键
  4. 保存私钥。
 类似资料:
  • 问题内容: 我正在使用netbeans 7.2运行JDK 1.7和Windows 7,我已经使用putty- keygen生成了SSH私钥和公钥对(SSH2-2048位)。我没有私钥密码。我现在正在尝试使用SFTP连接到主机之一。但是,当我通过私钥(ppk)设置身份时,代码将返回无效的私钥错误。我在WinSCP中使用了相同的私钥来连接到相同的主机,并且工作正常。请帮助我解决错误。这是我的代码: 问

  • 问题内容: 我正在使用以下代码在Java应用程序中使用Git。我有一个有效的密钥(一直使用),并且之前使用相同的密钥和git存储库,此特定代码对我有用,但是现在出现以下异常: 无效的私钥:[B @ 59c40796。 在这一行: 我的完整代码: 在线搜索后,我将createDefaultJSch更改为使用pemWriter: 但是仍然会收到 “无效的私钥” 异常。 问题答案: 我也偶然发现了这个问

  • 我使用以下代码在Java应用程序中使用Git。我有一个有效的密钥(一直使用它),并且这个特定的代码在使用相同的密钥和git存储库之前对我有用,但是现在我得到了以下异常: 无效的私钥:[B@59c40796。 在这一行: 我的完整代码: 在线搜索后,我将createDefaultJSch更改为使用pemWriter: 但仍然得到“无效私钥”异常。

  • 我们正在尝试使用JSCH从远程服务器下载文件。尝试时,两台服务器之间已经建立了SFTP密钥交换 它在不要求任何密码的情况下成功连接。但在java代码中,当我们尝试使用JSCH连接时,会出现无效私钥异常。 我所做的代码如下所示 编辑: im使用的JSCH版本是0.1.54 私钥的开头就像 我甚至尝试将私钥转换为openssh格式,但遇到了一些异常 如果我从命令中删除-f,它会工作,但我相信该文件没有

  • 我正在使用以下代码在Java应用程序中使用Git。我有一个有效的密钥(一直使用它),并且这个特定的代码以前用相同的密钥和git存储库为我工作过,但是现在我得到了以下异常: PrivateKey无效:[B@59C40796. 在这一行: 在网上搜索后,我将createDefaultJSch更改为使用PEMWriter: 但仍然得到“无效的PrivateKey”异常。

  • 问题内容: 我有SFTP密钥对文件的内容作为字符串。我需要使用JSch添加内容,但仅接受文件路径。反正我能做到吗? 我看到该类有一个方法- 我不知道这是怎么做的。 问题答案: 有一个重载,它从缓冲区中获取密钥: 另请参阅将私钥作为字符串的Java SFTP客户端。