programing

SFTP 업로드 파일 권한이 거부되었습니다.

subpage 2023. 6. 28. 21:43
반응형

SFTP 업로드 파일 권한이 거부되었습니다.

로컬 윈도우 PC에서 SFTP를 사용하여 리눅스 머신에 엑셀 파일을 업로드하려고 합니다.

내 코드는 다음과 같습니다.

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") 그러나 원격 폴더인 "/var/www/folder"가 "업로드" 작업을 포함한 응용 프로그램의 액세스를 수락하지 않을 수 있습니다.

솔루션:

이 문제를 해결하는 가장 간단한 방법은 모든 사용자에게 업로드 대상 디렉토리("/var/www/folder")에서 모든 작업을 수행할 수 있는 권한을 부여하는 것입니다.업로드 폴더에 대한 권한을 확인하려면 이 Linux 명령을 사용해 보십시오.

ls -ld /var/www/folder

일반 사용자의 /var/www/folder/ 디렉토리에 쓰기 또는 읽기(ex:drwxr-xr-x)가 허용되지 않는 경우 다음 명령을 사용하여 이 폴더에 대한 사용 권한을 부여하십시오.

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

대상 폴더의 권한이 충분한지 확인할 수 있으면(drwxrwxrwx) 응용 프로그램을 다시 실행하십시오.

참고: 다른 사용자에게 모든 권한을 부여하는 것은 좋은 방법으로 간주되지 않습니다.테스트를 위해 이 솔루션만 수행하고 나중에 사용자의 사양에 맞게 권한 설정을 변경하십시오.자세한 내용은 이 링크(클릭)참조하십시오.

언급URL : https://stackoverflow.com/questions/54637381/sftp-upload-file-permission-denied

반응형