SFTP에 접속하여 파일을 업로드하고 다운로드하는 간단한 예제 코드

2023. 5. 26. 06:59JAVA

728x90
반응형

[1]

먼저, Maven 또는 Gradle과 같은 의존성 관리 도구를 사용하여 JSch를 프로젝트에 추가해야 합니다.

 

 

 

[2]

Maven을 사용하는 경우 pom.xml 파일에 다음 종속성을 추가합니다.

 

<dependencies>
  <dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.55</version>
  </dependency>
</dependencies>

 

Gradle을 사용하는 경우 build.gradle 파일에 다음 종속성을 추가합니다.

dependencies {
  implementation 'com.jcraft:jsch:0.1.55'
}

 

 

 

[3]

이제 다음과 같이 Java 코드를 작성할 수 있습니다.

 

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class SftpExample {
    private static final String HOST = "sftp.example.com";
    private static final int PORT = 22;
    private static final String USERNAME = "your_username";
    private static final String PASSWORD = "your_password";

    public static void main(String[] args) {
        JSch jsch = new JSch();
        Session session = null;
        ChannelSftp channel = null;

        try {
            // SFTP 세션 열기
            session = jsch.getSession(USERNAME, HOST, PORT);
            session.setPassword(PASSWORD);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();

            // SFTP 채널 열기
            channel = (ChannelSftp) session.openChannel("sftp");
            channel.connect();

            // 로컬 파일 업로드
            String localFilePath = "/path/to/local/file.txt";
            String remoteDirectory = "/path/to/remote/";
            channel.put(localFilePath, remoteDirectory + "file.txt");

            // 로컬 파일 다운로드
            String remoteFilePath = "/path/to/remote/file.txt";
            String localDirectory = "/path/to/local/";
            channel.get(remoteFilePath, localDirectory + "file.txt");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 리소스 정리
            if (channel != null && channel.isConnected()) {
                channel.disconnect();
            }
            if (session != null && session.isConnected()) {
                session.disconnect();
            }
        }
    }
}

 

 

 

[4]

위의 코드에서 HOST, PORT, USERNAME, PASSWORD 변수를 사용자의 SFTP 서버 정보에 맞게 수정해야 합니다.

 

또한 업로드할 로컬 파일의 경로(localFilePath)와 SFTP 서버의 원격 디렉토리 경로(remoteDirectory)를 수정해야 합니다.

 

이 코드는 로컬 파일을 SFTP 서버로 업로드한 다음, SFTP 서버의 파일을 로컬로 다운로드하는 예제입니다.

 

업로드 및 다운로드할 파일의 경로를 알맞게 수정하십시오.

 

 

 

[5]

JSch는 Java에서 SSH 관련 작업을 수행하는 라이브러리이므로 SFTP 이외의 SSH 작업도 수행할 수 있습니다.

 

자세한 내용은 JSch의 문서를 참조하시기 바랍니다.

 

 

 

 

 

728x90
반응형