秘密鍵認証後、JSch ライブラリを使用して sftp サーバーにファイルをアップロードしようとしています。しかし、put、mkdir などのアクションは失敗メッセージをスローしています。私はいくつかの方法を試しましたが、確かにJSchの問題のように見えます。この問題に遭遇した人はいますか?
同じコード (mkdir,put) は、非秘密鍵 (ユーザー名/パスワード) 認証に最適です。手伝っていただけませんか。sftpChannel.ls も秘密鍵アプローチで動作しています。
私のコード:
JSch jsch = new JSch();
Session session = null;
if (privateKey != null||"".equals(privateKey)) {
jsch.addIdentity(privateKey);
}
session = jsch.getSession(userName, hostAddress, port);
session.setConfig("StrictHostKeyChecking", "no");
if(password!=null||"".equals(password)){
session.setPassword(password);
}
session.connect();
Channel channel = null;
if (sftp) {
channel = session.openChannel("sftp");
} else {
channel = session.openChannel("ftp");
}
session.setServerAliveInterval(92000);
channel.connect();
ChannelSftp sftpChannel = (ChannelSftp) channel;
// sftpChannel.put(new FileInputStream(new File(path)), remotePath );
// final Vector files = sftpChannel.ls(".");
// for (Object obj : files) {
// System.out.println("f:"+obj);
// }
sftpChannel.exit();
session.disconnect();
Exception in thread "main" 4: Failure
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2297)
at com.jcraft.jsch.ChannelSftp.mkdir(ChannelSftp.java:1708)
at zz.beans.RemoteExportBean.exportToFTP(RemoteExportBean.java:52)
at zz.beans.RemoteExportBean.main(RemoteExportBean.java:67)
Exception in thread "main" 4: Failure
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2297)
at com.jcraft.jsch.ChannelSftp.checkStatus(ChannelSftp.java:1946)
at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:566)
at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:438)
at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:405)
at zz.beans.RemoteExportBean.exportToFTP(RemoteExportBean.java:52)
at zz.beans.RemoteExportBean.main(RemoteExportBean.java:66)