【发布时间】:2020-02-17 21:55:06
【问题描述】:
我在使用 Jsch 库的 SFTP 通道将文档上传到 S3 存储桶时遇到异常。我知道它在 Filezilla/cyberduck 中通过相同的密钥和细节工作,但不是 java。有人能指出我错过了什么吗?
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
public class TestSSHUpdloadFile {
public static void main(String[] args) throws Exception {
JSch jsch = new JSch();
String privateKey = "/Users/Documents/SFTP/sftprivate_key";
Session session = null;
try {
jsch.addIdentity(privateKey, "Passphrase");
session = jsch.getSession("User", "sftp.aws.com", 22);
session.setConfig("StrictHostKeyChecking", "no");
//session.setPassword("Passphrase");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftpChannel = (ChannelSftp) channel;
sftpChannel.put("/Users/Documents/Temp1.csv", "/mys3bucket/Temp1.csv");
sftpChannel.exit();
session.disconnect();
} catch (JSchException e) {
e.printStackTrace();
} catch (SftpException e) {
e.printStackTrace();
}
}
}
以下是例外情况
com.jcraft.jsch.JSchException: USERAUTH fail
at com.jcraft.jsch.UserAuthPublicKey.start(UserAuthPublicKey.java:119)
at com.jcraft.jsch.Session.connect(Session.java:470)
at com.jcraft.jsch.Session.connect(Session.java:183)
at TestS3.TestSSHUpdloadFile.main(TestSSHUpdloadFile.java:21)
【问题讨论】:
-
你在使用AWS Transfer for SFTP吗?
标签: java amazon-web-services amazon-s3 sftp jsch