我正在尝试使用JSch从SFTP服务器检索一些文件,但出现以下错误。
3: Permission denied
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2846)
at com.jcraft.jsch.ChannelSftp._realpath(ChannelSftp.java:2340)
at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:342)
at com.company.common.sftp.impl.managedFile.moveFiles(managedFile.java:712)
这里是代码:
private List<String> moveFiles(String prefixFileName, String path) {
Session session = getSession();
Channel channel = connect(session);
ChannelSftp channelSftp = null;
try {
channelSftp = (ChannelSftp)channel;
channelSftp.cd(_workingDir);
...
}
...
finally {
channel.disconnect();
session.disconnect();
}
}
public Session getSession() {
Session session = null;
JSch jsch = new JSch();
session = jsch.getSession(_user,_server,_port);
session.setPassword(_password);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", _strictHostKeyChecking);
session.setConfig(config);
session.connect();
return session;
}
public static Channel connect(Session session) {
Channel channel = null;
channel = session.openChannel("sftp");
channel.connect();
return channel;
}
_workingDir
是一个属性,其值为:/user_files
。
源文件夹和目标文件夹都在Windows服务器上,并且已经授予了所有用户权限。但由于某种原因,我无法更改源(远程)服务器的当前目录。
有什么想法吗?
更新:Sftp服务器是freeFTPd,使用sftp客户端(例如Filezilla)可以轻松移动文件。
user_files
不在远程端。它试图访问一个不存在的文件夹。谢谢! - Iván Travecedo/user_files
而不是./user_files
会怎样? - Memphis Meng