我试图通过java中的JSCH lib连接sftp服务器,我对java中的publice /私钥认证没有太多了解,我有供应商提供的ppk文件,我必须上传我的文件,下面是我的java代码,任何人都可以指导我如何使用这个公共使用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.");
我使用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");