使用JSch拒绝权限

我正在尝试使用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 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是绝对路径。

尝试./user_files获取用户主目录的相对路径。

在Filezilla中,远程端是C:\user_files

我遇到了同样的问题,并且validation以下问题解决了我的问题:

  1. 我们尝试检索的文件的路径不存在。 因此,请确保该文件实际存在于您的应用程序正在访问的目录下以检索该文件。
  2. 确保在SFTP中配置并激活应用程序中用于建立连接的SFTP用户。
  3. 如果上述两个点在您的方案中都有效,则在重新启动SFTP服务后尝试。