首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JSch拒绝权限

使用JSch拒绝权限
EN

Stack Overflow用户
提问于 2015-10-20 17:40:21
回答 4查看 20.9K关注 0票数 3

我试图使用JSch从sftp服务器检索一些文件,但我得到了以下错误。

代码语言:javascript
复制
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)

以下是代码:

代码语言:javascript
复制
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),我可以毫无问题地移动文件

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-20 18:26:57

/user_files可能是一条绝对路径。

尝试./user_files以获得指向用户主目录的相对路径。

在Filezilla中,它是远程的C:\user_files吗?

票数 2
EN

Stack Overflow用户

发布于 2019-08-02 05:31:44

我还遇到了在docker容器中使用jsch时遇到的问题,并修复了在使用文件夹chowning并使用root启动sftp之后出现的问题:

  1. 使用root启动应用程序,而不是使用其他用户,因为它将使用root拥有的dir "/var/run“;
  2. 由于(1),您应该拥有一个由root拥有的路径作为数据路径,您最好给予路径完整的权限:chmod 777 /yourpath;
  3. 请注意:当使用"sftp -P 22 admin@127.0.0.1“登录sftp服务器时,应该使用mkdir,而不是在数据路径中这样做,因为路径将由根用户或其他系统用户拥有,而不是sftp系统中的用户,因此您无法上传文件(因为权限被拒绝);
  4. 在更改以上所有内容后,我终于可以在服务器上上传和下载文件。
票数 1
EN

Stack Overflow用户

发布于 2017-07-12 14:26:52

我也遇到了同样的问题,并核实了以下问题:

  1. 我们试图检索的文件的路径不存在。因此,请确保该文件实际存在于应用程序正在访问的目录下以检索该文件。
  2. 确保您在应用程序中使用的SFTP用户在SFTP中配置和激活了连接。
  3. 如果以上两个点在您的场景中都是有效的,那么在重新启动SFTP服务之后尝试。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33243278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档