SFTP上传文件“Permission denied”错误

21

我想使用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)

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


嗯,看起来是一个“Permission denied”错误。你在使用什么凭据和身份验证类型?你确定它们没问题吗? - brunorey
1个回答

24

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

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

解决方法:

最简单的解决方法是授予所有用户在您的上传目标目录("/var/www/folder")中执行任何操作的权限。请尝试此 Linux 命令以检查您上传文件夹的权限。

ls -ld /var/www/folder

如果你发现你的/var/www/folder/目录对于普通用户不允许writing或reading(例如drwxr-xr-x),请使用以下命令为该文件夹授予权限。

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

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

注意: 给其他用户全部权限不被视为良好的做法。 请仅在测试时执行此解决方案,并稍后更改权限设置以符合您的规范。如需更多详细信息,请查看此链接(点击)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接