spring - SFTP上传文件权限被拒绝

标签 spring spring-boot sftp jsch spring-integration-sftp

我正在尝试使用SFTP将excel文件从本地Windows PC上传到linux计算机。

这是我的代码:

private void uploadToSftp() {
        try
        {
            ChannelSftp sftpClient = null;
            Channel channel = null;
            JSch jsch = new JSch();
            Session session = jsch.getSession("username", "host", 22);
            session.setPassword("password");
            Properties config = new Properties();
            config.put("StrictHostKeyChecking","no");
            session.setConfig(config);
            session.connect();
            channel = session.openChannel("sftp");
            channel.connect();
            sftpClient = (ChannelSftp) channel;

            sftpClient.cd("/var/www/folder");
            File localFile = new File("C:\\Workspace\\upload-file\\test.xlsx");
            sftpClient.put(localFile.getAbsolutePath(),localFile.getName());

            sftpClient.disconnect();
            channel.disconnect();
            session.disconnect();
        } catch (JSchException e) {
            e.printStackTrace();  
        } catch (SftpException e) {
            e.printStackTrace();
        }
    }

但是每次我运行此应用程序时,我都会收到错误消息:
3: Permission denied
    at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2873)
    at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:594)
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:475)
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:365)

没有人知道可能是什么问题,我该如何解决?

最佳答案

您似乎将本地文件“C:\Workspace\upload-file\test.xlsx” 上传到远程目录,在SFTP上为“/var/www/folder”

我想您对本地文件(“C:\Workspace\upload-file\test.xlsx” )上的 r eading, w riting, e xecuting等具有全部权限,但是您的远程文件夹是“/var/www/folder” ,可能不接受您应用程序的访问,包括“上载”操作。

解决方案:

解决此问题的最简单方法是为所有用户授予所有权限,使其可以在您的上传目标目录(“/var/www/folder” )中执行任何操作。请尝试使用此linux命令来检查对您的上载文件夹的权限。

ls -ld /var/www/folder

如果您看到普通用户不允许使用/var/www/folder/目录 w 拼版或 r eading(例如:drwxr-xr-x),请使用以下命令授予此文件夹权限。
chmod 777 /var/www/folder
//check permission again.
ls -ld /var/www/folder

如果您可以检查目标文件夹的权限是否足够( drwxrwxrwx ),请再次运行您的应用程序。

注意:
为其他用户授予所有权限不是一个好习惯。
请执行此解决方案进行测试,然后在以后更改适合您规范的权限设置。有关更多详细信息,Please check this link(Click).

关于spring - SFTP上传文件权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54637381/

相关文章:

linux - 等效于 ftp 命令提示符和 sftp 中的散列

python - 如何创建一个已知的主机文件?

shell - 无法使用 Expect 脚本创建文件夹

spring - 在将Spring Boot项目迁移到Gradle Kotlin DSL中摆脱警告

java - 在 Spring MVC 中使用 HttpEntity 返回错误

spring-boot - Feign/Eureka 客户端不传递 X-Forwarded-For header

Java 8 Lambda 表达式验证

java - 身份验证失败: password does not match stored value (see update 2)

javascript - Kendo UI Grid 自定义命令重定向

java - 带有 spring-restdocs 2.0.2.RELEASE 的空指针(带有 Restassured)