2015-10-20 4 views
2

Я пытаюсь получить некоторые файлы с сервера sftp с помощью JSch, но я получаю следующую ошибку.Разрешение отклонено с использованием JSch

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) 

Вот код:

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, и все привилегии были предоставлены любому пользователю. Но по какой-то причине он не позволяет мне изменять текущий каталог на исходном (удаленном) сервере.

Любая идея?

UPDATE: Сервер Sftp является freeFTPd и с помощью клиента SFTP (например, FileZilla), я могу перемещать файлы без проблем

+0

Вы можете добавить себе скриншот страницы с файлом FileZilla, где есть каталог '/ user_files'? –

ответ

2

Возможно /user_files абсолютный путь.

Попробуйте ./user_files для относительного пути к домашнему каталогу пользователя.

В Filezilla это C:\user_files с дистанционной стороны?

+0

Папка 'user_files' не была на удаленной стороне. Он пытался получить доступ к несуществующей папке. Благодаря! –

0

Та же проблема была обнаружена мной и проверяя следующее сосредоточил свой вопрос:

  1. Путь файла, который мы пытаемся получить не существует. Поэтому убедитесь, что файл действительно существует в каталоге, к которому обращается ваше приложение, чтобы получить файл.
  2. Убедитесь, что пользователь SFTP, который вы используете в приложении для подключения, настроен и активен в SFTP.
  3. Если выше, обе точки действительны в вашем сценарии, попробуйте перезагрузить службу SFTP.
Смежные вопросы