我试图使用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服务器上,所有权限都授予任何用户。但出于某种原因,它不允许我更改源(远程)服务器中的当前目录。
有什么想法吗?
更新:服务器是freeFTPd,使用Sftp客户端(像Filezilla),我可以毫无问题地移动文件
发布于 2015-10-20 18:26:57
/user_files可能是一条绝对路径。
尝试./user_files以获得指向用户主目录的相对路径。
在Filezilla中,它是远程的C:\user_files吗?
发布于 2019-08-02 05:31:44
我还遇到了在docker容器中使用jsch时遇到的问题,并修复了在使用文件夹chowning并使用root启动sftp之后出现的问题:
发布于 2017-07-12 14:26:52
我也遇到了同样的问题,并核实了以下问题:
https://stackoverflow.com/questions/33243278
复制相似问题