使用 ppk 文件进行 java sftp 身份验证

Posted

技术标签:

【中文标题】使用 ppk 文件进行 java sftp 身份验证【英文标题】:java sftp authentication with ppk file 【发布时间】:2018-05-05 10:38:55 【问题描述】:

我正在尝试通过 java 中的 JSCH lib 连接 sftp 服务器,我对 java 中的公钥/私钥身份验证不太了解,我有一个供应商提供的 ppk 文件,我必须上传我的文件,下面是我的 java 代码,谁能指导我如何使用这个 public 与 SFTP 服务器进行身份验证

String privateKey = "E:\\csv_svb\\MTBC-SVB-PRVk.ppk";
        JSch jsch = new JSch();                        
                jsch.addIdentity(privateKey);                        
                session = jsch.getSession(SFTPUSER, SFTPHOST,SFTPPORT);
    //                        session.setPassword(SFTPPASS);
                            java.util.Properties config = new java.util.Properties();
                            config.put("StrictHostKeyChecking", "no");
                            session.setConfig(config);
                            session.connect();
                            channel = session.openChannel("sftp");
                            channel.connect();
                            out.writeln("Connected");
                            channelSftp = (ChannelSftp)channel;
                            channelSftp.cd(SFTPWORKINGDIR);
                            File f = new File(lRs.getString("SEND_FILE_PATH").toString());
                            channelSftp.put(new FileInputStream(f), f.getName());
                            out.writeln("File Uploaded to FTP Server Sucessfully.");

【问题讨论】:

您遇到了什么实际问题?你的代码有效吗?它会产生错误消息吗?错误说明了什么? 我收到错误Auth Failed,我不知道如何使用供应商提供的 MTBC-SVB-PRVk.ppk 文件登录远程 SFTP 你用的是什么版本的jsch? 使用 jsch-0.1.54 我如何使用此文件对远程 SFTP 服务器进行身份验证 【参考方案1】:

我使用 chilkatsoft 的示例将我的 .ppk 文件转换为 .pem openssh 文件。 https://www.example-code.com/java/ssh_ppk_to_pem.asp

然后添加 .pem 标识与 jsch 一起工作就好了。

JSch jSch = new JSch();
jsh.addIdentity("unencrypted_openssh.pem");

【讨论】:

以上是关于使用 ppk 文件进行 java sftp 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

通过 Java 的 SFTP 连接要求奇怪的身份验证

如何使用 ppk 公钥通过 python Paramiko 进行 ssh 连接

如何使用密码或 SSH 指纹进行 SFTP 身份验证 WinSCP C# .NET 程序集

使用 Java JSch 进行 SFTP 文件传输

处理Camel sftp端点身份验证失败

将 PEM 转换为 PPK 文件格式