Загрузка файла SFTP В доступе отказано - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь загрузить файл Excel с помощью SFTP на Linux-машину с моего локального компьютера с Windows.

Вот мой код:

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 голосов
/ 12 февраля 2019

Вы, кажется, загрузили свой локальный файл "C: \ Workspace \ upload-file \ test.xlsx" в удаленный каталог, "/ var / www / folder" по SFTP.

Я полагаю, у вас есть все права на r eading, w riting, e выполнение и т. Д. В вашем локальном файле ( "C: \ Workspace \ upload-file \ test.xlsx "), но ваша удаленная папка " / var / www / folder " может не принять доступ вашего приложения, включая действие" upload ".

РЕШЕНИЕ:

Самый простой способ решить эту проблему - просто дать всем пользователям разрешение на все действия в целевой папке загрузки ( "/вар / WWW / папка ").Пожалуйста, попробуйте эти команды linux для проверки прав доступа к вашей папке загрузки.

ls -ld /var/www/folder

Если вы видите, что ваш каталог / var / www / folder / не разрешен w riting или r eading (например, drwxr-xr-x) для обычных пользователей, предоставьте разрешения для этой папки с помощью следующей команды.

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

Если вы можете проверить целевую папкудостаточно разрешения ( drwxrwxrwx ), пожалуйста, запустите ваше приложение еще раз.

ПРИМЕЧАНИЕ: Предоставление всех разрешений другим пользователям не считается хорошей практикой.Пожалуйста, просто сделайте это решение для тестирования, и позже измените настройку разрешения, соответствующую вашей спецификации.Для более подробной информации, Пожалуйста, проверьте эту ссылку (Нажмите).

...