SFTP上传文件权限被拒绝

时间:2019-02-11 19:03:00

标签: 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)

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

1 个答案:

答案 0 :(得分:0)

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

我猜您对本地文件具有 r eading, w 写入, e 执行等所有权限( :\ Workspace \ upload-file \ test.xlsx“ ),但是您的远程文件夹” / var / www / folder“ 可能不接受您的应用程序访问权限,包括“上传”操作

解决方案:

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

ls -ld /var/www/folder

如果看到您的 / var / www / folder / 目录不允许 w 写入或 r 消极(例如:drwxr-xr -x)(对于普通用户),请使用follwing命令授予该文件夹的权限。

chmod 777 /var/www/folder
//check permission again.
ls -ld /var/www/folder

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

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

相关问题